我已经尝试了所有以前的答案和解决方案。'ascii'编解码器无法编码字符u' xe9'
我想使用这个值,这给了我编码相关的错误。
ar = [u'http://dbpedia.org/resource/Anne_Hathaway', u'http://dbpedia.org/resource/Jodie_Bain', u'http://dbpedia.org/resource/Wendy_Divine', u'http://dbpedia.org/resource/Jos\xe9_El\xedas_Moreno', u'http://dbpedia.org/resource/Baaba_Maal']
所以,我想,
d = [x.decode('utf-8') for x in ar]
这给:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 31: ordinal not in range(128)
我尝试了
d = [x.encode('utf-8') for x in ar]
从而消除错误,但改变了原来的内容
原值为u'http://dbpedia.org/resource/Jos\xe9_El\xedas_Moreno'
其转化为'http://dbpedia.org/resource/Jos\xc3\xa9_El\xc3\xadas_Moreno'
同时使用encode
什么是对付这种情况下正确的方法是什么?
编辑
错误是当我在
req = urllib2.Request()
[UnicodeEncodeError:'ascii'编解码器无法在位置20编码字符u'\ xa0':序号不在范围内(128)]的可能重复(http://stackoverflow.com/questions/9942594/unicodeencodeerror- ascii-codec -cant-encode-character -u-xa0-in-position-20) – sirfz
你想对数据做什么? ASCII编码不支持这些字符。这就是为什么我们编码如uff-8。如果您计划在野外使用此应用程序,我强烈建议您跳过ASCII码。 –
如果你已经有unicode字符串,那么你不想把它们解码成unicode字符串。 :-)您可能想要与需要非Unicode字符串的内容进行交互,这意味着通过encode()将其放入可接受的编码中。现在,通常是UTF-8,但这取决于你想要做什么以及与之交互的服务。 – jszakmeister