2

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

4

2 回答 2

5

它被称为 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')
台南 親子餐廳
于 2012-09-07T11:11:37.713 回答
1

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

pip install chardet
# or for python3
pip3 install chardet

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

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

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

或从外壳:

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

如果您需要更高的性能,那么还有cchardet — 一个更快的 C 优化版本的chardet.

于 2019-01-24T20:34:13.760 回答