2

こんにちは私は繁体字中国語のウェブサイトを持っています、そして私がサイト統計をチェックするとき、それはウェブサイトの検索用語がå%8f°å%8d%97 親å­%90é¤%90廳明らかに私には意味がないということを教えてくれます。私の質問は、このエンコーディングは何と呼ばれていますか?そして、Pythonを使用してこの文字列をデコードする方法はありますか?ありがとうございました。

4

2 に答える 2

5

これはmuttエンコーディングと呼ばれます。基になるバイトは元の意味を超えてマングルされており、実際のエンコーディングではなくなりました。

かつてはURLで引用されたUTF-8でしたが、現在はそれらのURLエスケープを引用解除せずにlatin-1として解釈されています。私はそれをそのように解釈することによってこれを解きほぐすことができました:

>>> 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 に答える