[#45609] ruby 1.8.6のNKFにおける漢字変換の不具合について — 京和 崇行 <kyowa_t@...>

初めましてこんにちは。カカクコムの京和と申します。

14 messages 2008/11/04

[ruby-list:45611] Re: ruby 1.8.6のNKFにおける漢字変換の不具合について

From: 京和 崇行 <kyowa_t@...>
Date: 2008-11-04 11:24:16 UTC
List: ruby-list #45611
カカクコム 京和です。

お返事ありがとうございます。

> nkfで入力文字コードを指定しないと、文字コードを推測します。
> nkfのバージョンが2.0.8になって推測のアルゴリズムが変わったのでしょう。
NKF.guessメソッドではUTF8と正しく推測しています。
NKF.guess("餃子") == NKF::UTF8 #=> true
また、
>>ruby 1.8.5から1.8.6のバージョンアップに伴い組み込みのnkfの
>>バージョンが2.0.7から2.0.8に上がっていますが、1.8.6添付のnkfの
>>ソース(ext/nkf/nkf-utf8)でコンパイルしたバイナリでは上記の
>>文字化けは起こりませんでした。
と、
>>他にも丼、俑、凛、巫などで確認しましたが、同様でした。
と言う結果から、推測アルゴリズムの変更に拠るものではない可能性が高そうです。

> 句読点があると誤認識しないようです。
おお、本当ですね。
ただし、長い文字列であれば一概に問題ないかというとそうでもないようです。
NKF.nkf("-w", "昨日は餃子専門店に行きました") #=> 文字化け
NKF.nkf("-w", "昨日は池袋にある餃子専門店に行きました") #=> OK

どちらにせよruby 1.8.5のNKFモジュールであれば問題ありません。
ちなみに僕が把握している誤認識のケースは文字コード間でバイト列が
同じものがある場合、nkfだと確かEUCから判定するので、その場合に
誤って判定されてしまうケースですね。

> 入力文字コードがわかっている場合は明示するべきです。
入力の文字コードは不定なので、意図的に入力側の
文字コードは指定しないようにしています。

==
京和崇行
kyowa_t@kakaku.com

In This Thread