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段)请参见以了解
属性错误的解释。