From: irodori@... Date: 2008-11-07T11:53:37+09:00 Subject: [ruby-list:45620] Re: ruby 1.8.6のNKFにおける漢字変換の不具合について 本庄と申します。 At Wed, 5 Nov 2008 14:05:19 +0900, 京和 崇行 wrote: > > 1.8.7でも検証してみます。ありがとうございます。 > 1.8.7で検証してみたところ、1.8.6と同様に文字化けしました。 > ext/nkf/nkf-utf8/nkf.cのバージョンも1.8.6と同じようです。 > > 試しにSourceForge上のruby 2.0.8βの > nkf.c, utf8tbl.c, utf8tbl.h, config.hで > ext/nkf/nkf-utf8以下を上書きしてruby 1.8.7をmakeしたところ、 > それで出来たnkf.soでは > NKF.nkf("-w", "餃子") #=> 餃子 > と問題ありませんでした。 > > やっぱりnkfのバージョンの問題なのかもしれないです。 ruby-1.8.6 付属の nkf 2.0.8 を使って検証してみました。 $ gcc -o nkf nkf.c ut8tbl.c $ ./nkf -V Network Kanji Filter Version 2.0.8 (2007-01-28) Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa),2000 S. Kono, COW Copyright (C) 2002-2006 Kono, Furukawa, Naruse, mastodon $ cat gyoza.txt 餃子 $ hexdump -b gyoza.txt 0000000 351 244 203 345 255 220 012 $ ./nkf -w < gyoza.txt | hexdump -b 0000000 351 244 203 345 255 220 012 --> OK $ ruby -pe 'gsub(/\n/,"")' < gyoza.txt \ | ./nkf -w | hexdump -b 0000000 356 246 244 350 217 245 352 266 220 --> NG よって問題は nkf の ruby バインダではなく nkf 本体側にあると思います。 一応、私のシステムにインストールしている 2.0.8b の結果です。 $ nkf -V Network Kanji Filter Version 2.0.8 (2007-07-20) Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa),2000 S. Kono, COW Copyright (C) 2002-2007 Kono, Furukawa, Naruse, mastodon $ ruby -pe 'gsub(/\n/,"")' < gyoza.txt \ | nkf -w | hexdump -b 0000000 351 244 203 345 255 220 --> OK ちなみに ruby-1.8.6 でも NKF.guess の結果は NKF::UTF8 になりますね。 -- Eiji Honjoh