«前の日記(2007年01月02日) 最新 次の日記(2007年01月04日)» 編集

Matzにっき


2007年01月03日 [長年日記]

_ [Ruby] nkf-utf8

手元のcalkiがUTF-8の「》」相当の文字(U+8BB)を含むエントリが文字化けするので、 nkf-utf8のソースを見てみた。 どうも自動判定の優先順位がEUC-JP,SJIS,JIS,UTF-8で固定されていて、 EUCの範囲内に収まる文字列はすべてEUC-JPとみなすことになっている。 で、UTF-8の「》」はEUC-JPの「損」と同じバイト列なのだ。

どうしたものかなあ。入力の文字コードははっきり分からないので ある種の判別と変換は避けられないしなあ。

今後、M17Nを取り込むにあたって もっと賢い自動判別がは必要だろうなあ。自動判別は正しくない判断をする 可能性があるから、なるたけ避けたいと言っても、実用のためには 避けて通れないだろう。

優秀なコード判別アルゴリズムはあるのかな。 Emacsのコード判別は結構賢いな。 上記の「》」と「損」も区別できてるし。


«前の日記(2007年01月02日) 最新 次の日記(2007年01月04日)» 編集