我正在使用Python 2.6.5,当我在Python shell中运行以下内容时,我得到:
>>> print u'Andr\xc3\xa9'
André
>>> print 'Andr\xc3\xa9'
André
>>>
上述解释是什么?鉴于u'Andr \ xc3 \ xa9',如何在html页面中正确显示上述值,以便显示André而不是André?
答案 0 :(得分:11)
'\xc3\xa9'
是unicode字符u'\u00e9'
的UTF-8编码(也可以指定为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'
请注意,print 'Andr\xc3\xa9'
给出预期结果的原因仅仅是因为系统的默认编码是UTF-8。例如,在Windows上我得到:
>>> print 'Andr\xc3\xa9'
André
至于输出HTML,它取决于您使用的Web框架以及HTML页面中输出的编码。一些框架(例如Django)会自动将unicode值转换为正确的编码,而其他框架则需要您手动执行此操作。
答案 1 :(得分:1)
试试这个:
>>> unicode('Andr\xc3\xa9', 'utf-8')
u'Andr\xe9'
>>> print u'Andr\xe9'
André
这可以回答你的问题。
编辑:或看到上面的回答
答案 2 :(得分:-2)
我不确定,但我猜测打印操作会应用不同的编解码器。可能有一些utf-8与unicode问题。
对于HTML,您需要使用unicode的HTML语法对某些字符进行编码。 我认为Python codecs模块可能能够为您提供帮助。