如何在Python中转换编码?

如何在Python中转换编码?,python,encoding,Python,Encoding,我有一个未编码的字符串»ÆñÊ÷。在网站上,您可以使用gb2312对其进行编码,然后使用iso8859对其进行解码,以便正确显示 在C#中,有一个名为的函数,它可以帮助您将字节从一种编码转换为另一种编码。正在进行的工作是直截了当的: encode the string into bytesA, using gb2312 encoder Encoding.Convert bytesA from gb2312 encoding to iso8859 encoding decode the bytes

我有一个未编码的字符串
»ÆñÊ÷
。在网站上,您可以使用
gb2312
对其进行编码,然后使用
iso8859
对其进行解码,以便正确显示

在C#中,有一个名为的函数,它可以帮助您将字节从一种编码转换为另一种编码。正在进行的工作是直截了当的:

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

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

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

>>> data = '»Æ¹ûÊ÷'
>>> data.decode('utf8').encode('latin1').decode('gb2312')
u'\u9ec4\u679c\u6811'
>>> print _
黄果树
通过将字符编码为拉丁语1,我们可以将字符解释为字节,以修复编码


经验法则:每当您有双重编码的数据时,通过使用该编解码器解码为Unicode来撤消额外的编码“层”,然后再次使用拉丁语-1编码以再次获得字节。

这在Python 3中不起作用(
str
没有
decode
方法)。但这将:
“»ÆÊ÷”。编码(“拉丁语”)。解码(“gb2312”)
。字符串必须用UTF-8编码,例如使用
#encoding:UTF-8
。@arbautjc:注意,我的方法和你的方法都要求原始字符串字节使用某种编码,是的。我的终端使用UTF-8,因此首先从UTF-8解码。