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: http://namazu.asablo.jp/blog/2007/11/04/1889819/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。