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

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

14 messages 2008/11/04

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

From: irodori@...
Date: 2008-11-07 02:53:37 UTC
List: ruby-list #45620
本庄と申します。

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


In This Thread