为什么Python以不同的方式输出字符串和相同值的unicode?

Thi*_*Lam 3 python unicode

我正在使用Python 2.6.5,当我在Python shell中运行以下内容时,我得到:

>>> print u'Andr\xc3\xa9'
André
>>> print 'Andr\xc3\xa9'
André
>>>
Run Code Online (Sandbox Code Playgroud)

上面有什么解释?鉴于u'Andr\xc3\xa9',如何在html页面中正确显示上述值,以便显示André而不是André?

int*_*jay 11

'\xc3\xa9'是unicode字符的UTF-8编码u'\u00e9'(也可以指定为u'\xe9').所以你可以使用u'Andr\u00e9'u'Andr\xe9'.

您可以从一个转换为另一个:

>>> 'Andr\xc3\xa9'.decode('utf-8')
u'Andr\xe9'
>>> u'Andr\xe9'.encode('utf-8')
'Andr\xc3\xa9'
Run Code Online (Sandbox Code Playgroud)

请注意,之所以print 'Andr\xc3\xa9'给出预期结果,只是因为系统的默认编码是UTF-8.例如,在Windows上我得到:

>>> print 'Andr\xc3\xa9'
Andr??
Run Code Online (Sandbox Code Playgroud)

至于输出HTML,它取决于您使用的Web框架以及HTML页面中输出的编码.一些框架(例如Django)会自动将unicode值转换为正确的编码,而其他框架则需要您手动执行此操作.