Python将latin1转换为UTF8

时间:2013-01-21 17:11:07

标签: python encoding utf-8 python-2.7 latin1

在Python 2.7中,如何将latin1字符串转换为UTF-8。

例如,我正在尝试将é转换为utf-8。

>>> "é"
'\xe9'
>>> u"é"
u'\xe9'
>>> u"é".encode('utf-8')
'\xc3\xa9'
>>> print u"é".encode('utf-8')
é

这封信是é,这是带有急性的拉丁文小写字母E(U + 00E9) UTF-8字节编码为:c3a9
拉丁字节编码为:e9

如何获得拉丁字符串的UTF-8编码版本?有人可以举例说明如何转换é?

3 个答案:

答案 0 :(得分:9)

要将拉丁语1的字节序列解码为Unicode,请使用.decode() method

>>> '\xe9'.decode('latin1')
u'\xe9'

Python对\xab以下的unicode代码点使用\u00ff转义。

>>> '\xe9'.decode('latin1') == u'\u00e9'
True

上述Latin-1字符可以编码为UTF-8:

>>> '\xe9'.decode('latin1').encode('utf8')
'\xc3\xa9'

答案 1 :(得分:2)

>>> u"é".encode('utf-8')
'\xc3\xa9'

你有一个UTF-8编码的字节序列。不要尝试直接打印编码的字节。要打印它们,您需要将编码的字节解码回Unicode字符串。

>>> u"é".encode('utf-8').decode('utf-8')
u'\xe9'
>>> print u"é".encode('utf-8').decode('utf-8')
é

请注意,编码和解码是有效抵消的相反操作。尽管Python将其打印为等效的u"é",但最终会返回原始的u'\xe9'字符串。

>>> u"é" == u'\xe9'
True

答案 2 :(得分:0)

  

concept = concept.encode('ascii','ignore')concept =   MySQLdb.escape_string(concept.decode( 'latin1的')。编码( 'UTF8')。rstrip()可以)

我这样做,我不确定这是否是一个好方法,但它每次都有效!!