如何在Python中打印以'iso-8859-1'编码存储的中文字符

2 投票
1 回答
1337 浏览
提问于 2025-04-18 06:57

我想打印一个文件的内容。用命令 'file -bi filename' 查看文件类型,结果显示是 'text/plain; charset=iso-8859-1'。这个文件里有一些字符串,比如 "ÏÂÔØ¡¢°²×°¡¢¸´ÖÆ¡¢·ÃÎÊ¡¢µ¥»÷¡°½ÓÊÜ¡±°´Å¥£¬»òÒÔÆäËû·½Ê½Ê¹ÓóÌÐò",其实这些字符串是代表中文字符的。

我在 Python 的命令行里试过这些

string='ÏÂÔØ¡¢°²×°¡¢¸´ÖÆ¡¢·ÃÎÊ¡¢µ¥»÷¡°½ÓÊÜ¡±°´Å¥£¬»òÒÔÆäËû·½Ê½Ê¹ÓóÌÐò'
a= string.decode('iso-8859-1')
b=a.encode('utf-8')
print b

还有

print( string.decode('iso-8859-1').encode('utf-8'))

以及

source_encoding = "iso-8859-1"
string = string.encode(source_encoding)
string = unicode(string, 'utf-8')

但是我在屏幕上看不到中文字符,反而看到的是 'Ã�Ã�Ã�Ã�¡¢°²Ã�°¡¢¸´Ã�Ã�¡¢·Ã�Ã�Ã�¡¢µ¥»÷¡°½Ã�Ã�Ã�¡±°´Ã�¥£¬»òÃ�Ã�Ã�äÃ�û·½Ã�½Ã�¹Ã�Ã�³Ã�Ã�ò' 这样的乱码。

我使用了一个在线工具 http://www.mdbg.net/chindict/chindict.php,选择了当前编码为 iso-8859-1,原始编码为 GB18030,结果显示为 国际程序许可协议...

有没有人能建议我用 Python 命令显示这些字符串为中文呢?提前谢谢大家!

1 个回答

1

根据这个在线工具的提示,file 可能不太准确,因为它只是“猜测”文件的编码方式。使用 gb18030 作为编码方式就能得到正确的结果:

>>> s = 'ÏÂÔØ¡¢°²×°¡¢¸´ÖÆ¡¢·ÃÎÊ¡¢µ¥»÷¡°½ÓÊÜ¡±°´Å¥£¬»òÒÔÆäËû·½Ê½Ê¹ÓóÌÐò'
>>> print s.decode('gb18030')
下载、安装、复制、访问、单击“接受”按钮,或以其他方式使用程序

撰写回答