我正在使用Python 2.6.6
item = {u'snippet': {u'title': u'How to Pronounce Canap\xe9'}}
title = item['snippet']['title']
print title
结果:
How to Pronounce Canapé
期望的结果:
How to Pronounce Canapé
这看起来像是一个Unicode问题,我尝试编码和解码到utf8,但结果仍然相同,有什么想法吗?
答案 0 :(得分:2)
您的终端需要UTF-8
:
$ locale charmap
UTF-8
使用UTF-8
打印Python:
>>> sys.stdout.encoding
UTF-8
将SecureCRT设置更改为接受UTF-8。
答案 1 :(得分:1)
这很可能是由于Python使用的默认编码与控制台编码不匹配。看起来Python假设编码是UTF-8,然后控制台将其解释为latin-1。
答案 2 :(得分:1)
如果可能,请使用\xe9
而不是\u00e9
。然后在输出unicode字符串时选择适当的编码:
print title.encode('latin1')
合理的编码取决于您输出的位置。通常,您必须从环境变量推断它,或者让您的用户在配置文件中做出选择。
PS:如果你经常处理Unicode字符串,我建议切换到Python 3(例如3.3),如果可能的话。在那里,Unicode处理更清晰/明确/清晰。
答案 3 :(得分:0)
我在终端中获得预期的输出(使用python 2.7.7) 您期望的格式取决于终端中设置的编码。对我来说,它设置为'cp437'
>>> import sys
>>> sys.stdin.encoding
'cp437'
>>> sys.stdout.encoding
'cp437'
您可以通过提供以下内容来验证您是否获得了正确的输出:
print title.encode('cp437')
答案 4 :(得分:0)
将iso-8859-1
中的sitecustomize.py文件中的默认编码设置为${pythondir}/lib/site-packages/
import sys
sys.setdefaultencoding('iso-8859-1')
对我而言,它适用于\xe9
。