我使用的是 Python 2.6.5,当我在 Python shell 中运行以下命令时,我得到:
>>> print u'Andr\xc3\xa9'
André
>>> print 'Andr\xc3\xa9'
André
>>>
上面的解释是什么?给定 u'Andr\xc3\xa9',如何在 html 页面中正确显示上述值,以便显示 André 而不是 André?
最佳答案
'\xc3\xa9'
是 unicode 字符 u'\u00e9'
(也可以指定为 u'\xe9'
)的 UTF-8 编码。所以你可以使用 u'Andr\u00e9'
或 u'Andr\xe9'
。
您可以从一种转换为另一种:
>>> 'Andr\xc3\xa9'.decode('utf-8')
u'Andr\xe9'
>>> u'Andr\xe9'.encode('utf-8')
'Andr\xc3\xa9'
请注意,
print 'Andr\xc3\xa9'
给您预期结果的原因仅仅是因为您系统的默认编码是 UTF-8。例如,在 Windows 上我得到:>>> print 'Andr\xc3\xa9'
André
至于输出 HTML,这取决于你使用的 web 框架以及你在 HTML 页面中输出的编码。某些框架(例如 Django)会自动将 unicode 值转换为正确的编码,而其他框架则需要您手动执行此操作。
关于python - 为什么Python输出相同值的字符串和unicode不同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2782085/