如何在Python中转换编码?

时间:2014-01-04 14:09:31

标签: python encoding

我有一个错误编码»Æ¹ûÊ÷的字符串。在http://2cyr.com/decode/?lang=en网站上,您可以使用gb2312 编码,然后使用iso8859 解码,以便正确显示。

在C#中,有一个名为Encoding.Convert的函数,它可以帮助您将字节从一种编码转换为另一种编码。在过程中是直截了当的:

encode the string into bytesA, using gb2312 encoder
Encoding.Convert bytesA from gb2312 encoding to iso8859 encoding
decode the bytes using iso8859 encoder

在Python中,我尝试了各种各样的编码和解码方法,但是没有人可以帮助我将给定的字符串转换为可以正确显示的正确编解码器。

1 个答案:

答案 0 :(得分:6)

您的数据是UTF-8编码的GB2312,至少粘贴到我的UTF-8配置的终端窗口中:

>>> data = '»Æ¹ûÊ÷'
>>> data.decode('utf8').encode('latin1').decode('gb2312')
u'\u9ec4\u679c\u6811'
>>> print _
黄果树

编码为Latin 1允许我们将字符解释为字节以修复编码。

经验法则:每当您有双重编码数据时,请撤消额外的'层'通过使用该编解码器解码为Unicode进行编码,然后再次使用Latin-1进行编码以再次获取字节。