python中的编码问题

python中的编码问题,python,telegram-bot,Python,Telegram Bot,我正在编写一个电报机器人,它使用此API调用显示天气: http://api.openweathermap.org/data/2.5/weather?q=CITY_NAME_IN_RUSSIAN&APPID=API_KEY_HERE&lang=ru&units=metric&encode=utf-8 其中参数CITY\u NAME\u(俄语)= 莫斯科的城市名称示例为俄语МСаа 如果我用英语发送,莫斯科,那么一切正常。但如果我用俄语发送,МöСаа,我会得到一

我正在编写一个电报机器人,它使用此API调用显示天气:

http://api.openweathermap.org/data/2.5/weather?q=CITY_NAME_IN_RUSSIAN&APPID=API_KEY_HERE&lang=ru&units=metric&encode=utf-8
其中参数
CITY\u NAME\u(俄语)=

莫斯科的城市名称示例为俄语МСаа

如果我用英语发送,
莫斯科
,那么一切正常。但如果我用俄语发送,
МöСаа
,我会得到一个错误

UnicodeEncodeError: 'ascii' codec can't encode characters in position 24-28: ordinal not in range(128)

如何修复它?

我假设您使用的是python 2。如果是的话 尝试使用unicode('МöСаа','utf-8')


您还可以将此添加到文件顶部
#-*-编码:utf-8-*-

谢谢您的回答。我使用python的最新版本<代码>城市名称(俄语)这是用户编写并发送给bot的内容,它可以是
МСааа(莫斯科)
Сааааааааааааа107。我不知道用户可以发送什么,因此我不能使用
unicode('МСаа','utf-8')
。我尝试了
#-*-编码:utf-8-*-
,但这也没用。我想首先你必须用urllib.parse.quote()解析URL(或你的俄语单词),它用%xx转义替换字符串中的特殊字符。
导入urllib
urllib.parse.quote(“МСаа”)
result:
'%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0'
如果在URL中传递结果字符串,则会得到相应的响应。