久々のプログラミングネタ。
Python で文字列の文字コードを判別したくなったんだけど、標準では用意されていないらしい。で、いろいろと調べてみたら、今のところ以下の二種類があるのかな?
- UNIVERSAL ENCODING DETECTOR
chardet と呼ばれている(?)ライブラリ。confidence というパラメータで、確かさを返してくれる。
Document がちょっと不便? - NkfPython
日本人なら誰でも知っている(?) nkf の python インターフェイス。文字コード判別だけでなく変換もやってくれる優れもの。
んで、軽く実験してみた。
chardet | Nkf | |
---|---|---|
'\x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8' |
'windows-1252' |
'Shift_JIS' |
'\xa4\xa2\xa4\xa4\xa4\xa6\xa4\xa8\xa4\xaa' |
'EUC-JP' |
'EUC-JP' |
'\x1b$B$"$$$&$($*\x1b(B' |
'ISO-2022-JP' |
'ISO-2022-JP' |
てな具合に、chardet が sjis だけ判定ミス。たぶん、内部判定の優先順位の問題なんだろうけど、短い文字列だと間違えやすい気がします。>chardet
まぁ、普通に NkfPython を使えばいいのかな。長い文字列だと chardet も精度が上がるので問題ないんだけどね。
コメントを投稿する