Python UnicodeEncodeError:&x27;ascii';编解码器可以';对位置90-96的字符进行t编码:序号不在范围内(128)

Python UnicodeEncodeError:&x27;ascii';编解码器可以';对位置90-96的字符进行t编码:序号不在范围内(128),python,python-3.x,Python,Python 3.x,我有以下代码: url= 'https://yandex.ru/search/xml?user=uid-2h3232xfhboy&key=03.292922330523:6b4c80ghghghhghgdsfdsfds4c4b4a7872fb7d2bb04bfdgbb02b76c3d&query=' key = "абс" url = url + key print(url) xml = urllib.request.urlopen(url).r

我有以下代码:

url= 'https://yandex.ru/search/xml?user=uid-2h3232xfhboy&key=03.292922330523:6b4c80ghghghhghgdsfdsfds4c4b4a7872fb7d2bb04bfdgbb02b76c3d&query='
key = "абс"
 url = url + key
        print(url)
        xml = urllib.request.urlopen(url).read()
但我有一个错误:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 90-96: ordinal not in range(128)
我该怎么办

我试着做
url=url.encode(“utf-8”)
但是没有帮助。出现以下错误:

AttributeError:“字节”对象没有属性“超时”

我试着这样做:
url=u'。加入((self.yau url,key)).encode('utf-8')
正如这里所建议的:

但也犯了同样的错误

AttributeError:“字节”对象没有属性“超时”


我该怎么办?

在URL中不能使用非ASCII字符。您需要适当地引用您的
值:

import urllib.parse

url= 'https://yandex.ru/search/xml?user=uid-2h3232xfhboy&key=03.292922330523:6b4c80ghghghhghgdsfdsfds4c4b4a7872fb7d2bb04bfdgbb02b76c3d&query='
key = "абс"
quoted = urllib.parse.quote(key)
url = url + quoted
这个方法适合我(我使用Pycharm ide)。转到client.py,然后将request.encode('ascii')更改为request.encode('utf-8)或任何您想要的编码器。现在应该是工作没有问题了


编辑:您需要更改源文件,以便在url中使用utf字符。在request.encode中,很难将代码转换为ascii

您是否经历过与此非常类似的其他Q&A?(请参见“相关”侧栏。)@glibdud是的,我已经通过了一些与此非常类似的问答(请参见问题的最后3段)请参见以了解
属性错误的解释。