如何用Python将utf-8字符串转换为big5?
我使用的是 Python 2.6.6,系统语言设置是 ('en_US', 'UTF8')
我尝试了很多方法想把 utf-8 字符串转换成 big5 编码,但都不成功。如果你知道怎么做,请给我一些建议,非常感谢。
有一个中文词叫 '單車',意思是 '自行车'
它的 Unicode 编码是 \u55ae\u8eca
str_a = u'\u55ae\u8eca'
str_b = '\u55ae\u8eca'
print str_a # output '單車'
print str_b # output '\u55ae\u8eca'
我知道 str_a 可以正常工作,但我也想把 str_b 转换成 big5 编码。
我试过 decode、encode 和 unicode,但还是不行。
有没有什么好主意?谢谢。
2 个回答
3
你应该可以这样做:
str_a = u'\u55ae\u8eca'
str_b = str_a.encode('big5')
print str_a
print str_b.decode('big5')
5
str_b
是一串字节序列:
In [19]: list(str_b)
Out[19]: ['\\', 'u', '5', '5', 'a', 'e', '\\', 'u', '8', 'e', 'c', 'a']
这里的反斜杠和 u
等都是单独的字符。把它和 unicode 对象 str_a
中的 unicode 代码点序列进行比较:
In [24]: list(str_a)
Out[24]: [u'\u55ae', u'\u8eca']
要把格式不正确的字符串 str_b
转换为 unicode,可以使用 unicode-escape
进行解码:
In [20]: str_b.decode('unicode-escape')
Out[20]: u'\u55ae\u8eca'
In [21]: print(str_b.decode('unicode-escape'))
單車