KAKASI の補助漢字2007年11月04日 15時32分49秒

EUC-JP で 0x8f は補助漢字の1バイト目。KAKASI は3バイト漢字に対応していないため、1バイト目を削除して動くようです。 NKFでは(デフォルトでは)3バイトとも削除します。

$ echo -n -e "\x8f\xd4\xda" | kakasi -ieuc -oeuc| od -tx1
0000000 d4 da
$ echo -n -e "\x8f\xd4\xda" | nkf -Ee | od -tx1
0000000

本来正しい動作ではありませんが、補助漢字をサポートしていない仕様なので文字化けは仕方がないところです。 異常終了しないようになっているだけマシということですね。

補足) これは man KAKASI の EUC のところを見ると説明がありました。

     EUC:
         GL -- G0 -- ASCII
                   G1 -- JISx0201のかたかな
                   G2 -- JISx0201のかたかな
         GR -- G3 -- JISx0208 の文字

この説明にはいささか疑問を持つところもありますが、G3 に JISX0208 を割り当てることになっているので、KAKASI の仕様ということでしょう。 昔の商用 UNIX では補助漢字に対応していなかったので、この仕様は十分に意味がある(あった)と思います。

なお、実際は

     EUC:
         GL -- G0 -- ASCII
         GR -- G1 -- JIS X 0208 の文字
                   G2 -- JIS X 0201のかたかな
                   G3 -- JIS X 0208 の文字 (本来は JIS X 0212 補助漢字)

となっているはずです。

訂正) と思いましたが、man のままで何故かデフォルトで GR に G3 が割り当てられているという変則でした。 そういえば、G4 まで用意していたり、SJIS を同様に扱っていたりとかなりの変則をやっているので??? なところは他にも多々あります。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://namazu.asablo.jp/blog/2007/11/04/1889819/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。