@i_ikigai

При открытии созданной сылки в яндекс, на айфоне вместо пробелов заполняется %20, но на андроиде нормально. В чем проблема и как ее решить?

async def process_callback_button1(callback_query: types.CallbackQuery):
    genre = callback_query.data
    random_film = handlers.films(genre)
    await bot.answer_callback_query(callback_query.id)
    await bot.send_message(callback_query.from_user.id, f"{search}", reply_markup=InlineKeyboardMarkup().add(
        InlineKeyboardButton(text=f'{random_film}',
                             url=f'https://yandex.ru/search/?text={random_film}')))


def films(genre):
    with open('films_genre_dict.json', encoding='utf-8') as f:
        dict_films = json.load(f)
        s = random.choice(dict_films[f'{genre}'])
    return f'{s[0]} {s[1]}'


spoiler
На айфоне5f3af36ebddc3918985383.jpeg


spoiler
На андроиде5f3af39d1e491788001450.jpeg
  • Вопрос задан
  • 96 просмотров
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix Куратор тега Python
yellow
Как правильно сказали выше - это называется URL Encoding. Кодируйте свой текст заранее сами, тогда все будет хорошо.

import urllib.parse

def films(genre):
    with open('films_genre_dict.json', encoding='utf-8') as f:
        dict_films = json.load(f)
        s = random.choice(dict_films[f'{genre}'])
    return urllib.parse.quote(f'{s[0]} {s[1]}')


ps
f'{genre}'

f"{search}"

f'{random_film}'

why???
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы