nkf-2.0.9リリース UTF-16の判定が....
実に久しぶりnkf-2.0.9にアップデートされました。このところNKFCocoaの開発をしていたこともあってちょくちょくチェックはしていたのですが、正直アップデートされるとは思っていなかったのでちょっとビツクリ。v2.0.8ではUTF-16がBOM付きのみの判定だったのでちょっと期待したのですがリリースノートを読む限りそのあたりは修正されていないようです。ど・こ・ろ・かむしろUTF-16の判定精度が...
ためしてみたところ、これまでできていたBOM付きのUTF-16もASCII判定に...さらに ISO-2022-jpも正しく認識されない場合があるみたいです。
%nkf-2.0.9> ./nkf -Mj NKFCocoa/tests/data/utf-8.txt | ./nkf -g
%nkf-2.0.9> ASCII
%nkf-2.0.9> ./nkf -g NKFCocoa/tests/data/utf-16.txt
%nkf-2.0.9> ASCIIソースのほうはかなり修正が大きくてまだ読み切れていないので僕のconfigの仕方になにか問題があるのかもしれません。Ruby1.9.1に同梱されているものと同様とあるので念のため試してみると(ruby 1.9.1p0 (2009-01-20 revision 21700) [i686-linux]判定できたのはUTF8だけという結果。このうちutf16.txtはBOM付きですからせめてこれだけでも正確に判定して欲しかった。Leopard付属のRuby1.8.6のnkfならこれは正しく判定できたのに...
ruby 1.9.1p0 (2009-01-20 revision 21700) [i686-linux]
./utf32.txt -> "US-ASCII"
./utf32be.txt -> "US-ASCII"
./utf16le.txt -> "Shift_JIS"
./utf8.txt -> "UTF-8"
./utf32le.txt -> "Shift_JIS"
./utf16be.txt -> "US-ASCII"
./utf16.txt -> "US-ASCII"
ruby 1.8.6 (2008-03-03 patchlevel 114) [universal-darwin9.0]
./utf32.txt -> "UNKNOW"
./utf32be.txt -> "ASCII"
./utf16le.txt -> "Shift_JIS"
./utf8.txt -> "UTF8"
./utf32le.txt -> "Shift_JIS"
./utf16be.txt ->"ASCII"
./utf16.txt -> "UTF16"
というわけで、NKFCocoaには当面2.0.9を取り込むのは見合わせようかと思います。ところで、検証のため同じファイルをperlのEncodeモジュールで試してみると
$Encode::Guess::VERSION 2.0
./utf32.txt -> UTF-32
./utf32be.txt -> UTF-32BE
./utf16le.txt -> UTF-16LE
./utf8.txt -> utf8
./utf32le.txt -> UTF-32LE
./utf16be.txt -> UTF-16BE
./utf16.txt -> UTF-16
なんとすべて判定できました。おそるべし、Dan.






Comments