在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编码版本?有人可以举例说明如何转换é?
答案 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()可以)
我这样做,我不确定这是否是一个好方法,但它每次都有效!!