もってけ~| メイン |96時間

Python で文字コード判別

| コメント(0) | 1 TrackBack

久々のプログラミングネタ。

Python で文字列の文字コードを判別したくなったんだけど、標準では用意されていないらしい。で、いろいろと調べてみたら、今のところ以下の二種類があるのかな?

  1. UNIVERSAL ENCODING DETECTOR
    chardet と呼ばれている(?)ライブラリ。confidence というパラメータで、確かさを返してくれる。
    Document がちょっと不便?
  2. NkfPython
    日本人なら誰でも知っている(?) nkf の python インターフェイス。文字コード判別だけでなく変換もやってくれる優れもの。

んで、軽く実験してみた。

chardet

Nkf

'\x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8'
(sjis で'あいうえお')

'windows-1252'

'Shift_JIS'

'\xa4\xa2\xa4\xa4\xa4\xa6\xa4\xa8\xa4\xaa'
(euc-jp で'あいうえお')

'EUC-JP'

'EUC-JP'

'\x1b$B$"$$$&$($*\x1b(B'
(iso-2022-jp で'あいうえお')

'ISO-2022-JP'

'ISO-2022-JP'

てな具合に、chardet が sjis だけ判定ミス。たぶん、内部判定の優先順位の問題なんだろうけど、短い文字列だと間違えやすい気がします。>chardet

まぁ、普通に NkfPython を使えばいいのかな。長い文字列だと chardet も精度が上がるので問題ないんだけどね。

1 TrackBack

TrackBack URL: http://denchu.jp/cgi-bin/movabletype/mt-tb.cgi/24

Pythonで文字コード判定 from 週末プログラミング日記 on 2009年11月29日 22:14

Pythonでは、日本語文字列を含むファイル(別に、ファイルだけではないですが・・・)を扱う場合には、そのファイルの文字コードに注意する必... Read More

コメントを投稿する