使用Python解码未知编码的繁体中文字符串

时间:2012-09-07 10:59:39

标签: python text-manipulation

您好我有一个繁体中文网站,当我查看网站统计信息时,它告诉我该网站的搜索字词为å%8f°å%8d%97 親å­%90é¤%90廳,这显然对我没有意义。我的问题是这个编码叫什么?有没有办法使用Python来解码这个字符串。谢谢。

2 个答案:

答案 0 :(得分:4)

它被称为mutt编码;基础字节已被超出其原始含义,并且它们不再是真正的编码。

曾经是URL引用的UTF-8,但现在解释为latin-1而没有取消引用这些URL转义。我能够通过解释它来解决这个问题:

>>> from urllib2 import unquote
>>> bytesquoted = u'å%8f°å%8d%97 親å­%90é¤%90廳'.encode('latin1')
>>> unquoted = unquote(bytesquoted)
>>> print unquoted.decode('utf8')
台南 親子餐廳

答案 1 :(得分:0)

您可以使用chardet。使用以下命令安装库:

pip install chardet
# or for python3
pip3 install chardet

该库包含一个cli实用程序chardetect(或相应的chardetect3),该实用程序采用文件路径。

一旦知道了编码,就可以在python中使用它,例如:

codecs.open('myfile.txt', 'r', 'GB2312')

或从shell:

iconv -f GB2312 -t UTF-8 myfile.txt -o decoded.txt

如果您需要更高的性能,那么还可以使用 cchardet -一种更快的C优化版本的chardet