[Kakasi-dev 27] Re: Text::Kakasi::do_kakasi で分かち書きを行った際に文字化けが起こることがある問題について

Tadamasa Teranishi yw3t-trns @ asahi-net.or.jp
2005年 6月 2日 (木) 20:15:59 JST


寺西です。

# いいむらさんから私信でメールをもらいました。

Tadamasa Teranishi wrote:
> 
> kakasi コマンドでも発生することを確認しました。
> 
> # echo 蚫です。Kakasiの分かち書きで問題が起こる文字があるようで
> す。 | kakasi -w
> 蚫 です。 Kakasi の分かち書きで 問 題 が起こる文字がある よ うです。

# echo 蚫です。Kakasiの分かち書きで問題が起こる文字があるようで
す。 | kakasi -w -ieuc
蚫 です 。 Kakasi の 分か ち 書き で 問題 が 起こ る 文字 があるようです
。

となり、漢字コードの自動判定で Shift_JIS とみなされたというオチでした。
これは

 > もしも指定されない場合には入力から判断しようとします。 KAKASI は
 > 入力をためこんで統計的に処理する方法がとれないので、最初の漢字
 > らしい文字をもって判断します。
 > 
 > 1. ESC-$-B
 > 2. ESC-$-@
 > 3. 0x80 以上の値
 >    この時さらに 1 Byte を入力して、この 2 Byte で  シ フ トJIS   の
 >    JISx0208  文字として解釈できる場合、新JIS コーディングと解釈しま
 >    す。
 > 4. 0x80 で上記に該当しない
 >    以降は EUC コーディングを仮定します。
 > 
 >    最初にJISx0201のかたかなを表現する 0xa0 以上のコードに遭遇した場
 >    と誤って解釈します。つまり `燹' から `螢' までの 945 文字のい ず
 >    れかが EUC で表現されていても SJIS に解釈されてしまいます。

という理由によるものでした。(一般的な漢字コードの自動認識に比べて、
認識率が低い)

元のプログラムは、

 Text::Kakasi::getopt_argv("kakasi", "-w -ieuc -oeuc");
となっていたので、-ieuc オプションが利いていなかったようです。
 Text::Kakasi::getopt_argv("kakasi", "-w", "-ieuc", "-oeuc");
とすれば、解決したとのことです。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns @ asahi-net.or.jp
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E




Kakasi-dev メーリングリストの案内