我已经试过所有以前的答案和解决方案。
我正在尝试使用这个值,它给了我与编码相关的错误。
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'
,在使用encode
时转换为'http://dbpedia.org/resource/Jos\xc3\xa9_El\xc3\xadas_Moreno'
处理这种情况的正确方法是什么?
编辑
当我输入这些链接时出错
req = urllib2.Request()
python中的
Unicode strings
是"raw" unicode
,因此请确保.encode()
和.decode()
是适当的。使用utf8
编码被认为是全世界多个开发组的最佳实践。 要编码,请使用urllib2
库中的quote
函数:要解码,请使用
unquote
:另外,如果您对Unicode和UTF-8工作更感兴趣,请查看Unicode HOWTO
字符串的第二个版本是原始unicode字符串的正确utf-8表示形式。如果要进行有意义的比较,则必须对存储的字符串和用户输入字符串使用相同的表示形式。这里要做的明智的事情是始终在内部(在代码中)使用Unicode字符串,并确保用户输入和存储的字符串都从系统边界(存储子系统和用户输入子系统)的各自编码正确地解码为Unicode。
此外,您似乎对unicode和编码有点困惑,因此阅读this和this可能会有所帮助。
在Unicode列表中,
u'http://dbpedia.org/resource/Jos\xe9_El\xedas_Moreno'
是表示Unicode字符串的ASCII安全方式。当以支持完整西欧字符集(如UTF-8)的形式编码时,它是:http://dbpedia.org/resource/José_Elías_Moreno
您的
.encode("UTF-8")
是正确的,在UTF-8编辑器或浏览器中看起来是正常的。在编码之后,您看到的是UTF-8的ASCII安全表示。例如,你的麻烦招牌是和。
简而言之,您的
.encode()
方法是正确的,应该用于写入文件或浏览器。相关问题 更多 >
编程相关推荐