如何在Python中打印以'iso-8859-1'编码存储的中文字符
我想打印一个文件的内容。用命令 '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')
下载、安装、复制、访问、单击“接受”按钮,或以其他方式使用程序