[ruby-trunk - Bug #7005][Open] NKF: CP50221 から CP932 に変換できない文字がある

Issue #7005 has been reported by tommy (Masahiro T.).


Bug #7005: NKF: CP50221 から CP932 に変換できない文字がある

Author: tommy (Masahiro T.)
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]

NKF で CP50221 から CP932 に変換できない文字があります。
CP932 で 0xF040 から 0xF9FC までの文字のうち 589 文字が変換できません。
どうやら CP50221 で1バイト目が 0x80 以上で2バイト目が 0x21-0x3F の文字が変換できないようです。

以下のプログラムは CP932 で 0xF040 から 0xF9FC までの文字を CP50221 に変換して CP932 に戻して、
空文字列になってしまうものを出力してます。

Ruby 1.8.7 では変換できない文字はありませんでした。

require ‘nkf’
(0xf0…0xf9).each do |c1|
(0x40…0xfc).each do |c2|
next if c2 == 0x7f
cp932 = [c1, c2].pack(“C*”)
cp50221 = NKF.nkf(“-m0x --ic=cp932 --oc=cp50221”, cp932)
cp932_bak = NKF.nkf(“-m0x --ic=cp50221 --oc=cp932”, cp50221)
if cp932_bak.empty?
puts [cp932.unpack(“H*”), cp50221.unpack(“H*”)].join(" ")
end
end
end

Issue #7005 has been updated by tommy (Masahiro T.).

Ruby 1.8.7 の ext/nkf を 1.9.3 で無理やりコンパイルしてみたところ問題なかったので
NKF のバージョンによるものなのかもしれません。

Bug #7005: NKF: CP50221 から CP932 に変換できない文字がある

Author: tommy (Masahiro T.)
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]

NKF で CP50221 から CP932 に変換できない文字があります。
CP932 で 0xF040 から 0xF9FC までの文字のうち 589 文字が変換できません。
どうやら CP50221 で1バイト目が 0x80 以上で2バイト目が 0x21-0x3F の文字が変換できないようです。

以下のプログラムは CP932 で 0xF040 から 0xF9FC までの文字を CP50221 に変換して CP932 に戻して、
空文字列になってしまうものを出力してます。

Ruby 1.8.7 では変換できない文字はありませんでした。

require ‘nkf’
(0xf0…0xf9).each do |c1|
(0x40…0xfc).each do |c2|
next if c2 == 0x7f
cp932 = [c1, c2].pack(“C*”)
cp50221 = NKF.nkf(“-m0x --ic=cp932 --oc=cp50221”, cp932)
cp932_bak = NKF.nkf(“-m0x --ic=cp50221 --oc=cp932”, cp50221)
if cp932_bak.empty?
puts [cp932.unpack(“H*”), cp50221.unpack(“H*”)].join(" ")
end
end
end

Issue #7005 has been updated by tommy (Masahiro T.).

NKF の問題だったので NKF のフォーラムに投稿しました。
スレッド 公開討議:CP50221 から CP932 に変換できない文字がある - nkf Network Kanji Filter - OSDN

Bug #7005: NKF: CP50221 から CP932 に変換できない文字がある

Author: tommy (Masahiro T.)
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]

NKF で CP50221 から CP932 に変換できない文字があります。
CP932 で 0xF040 から 0xF9FC までの文字のうち 589 文字が変換できません。
どうやら CP50221 で1バイト目が 0x80 以上で2バイト目が 0x21-0x3F の文字が変換できないようです。

以下のプログラムは CP932 で 0xF040 から 0xF9FC までの文字を CP50221 に変換して CP932 に戻して、
空文字列になってしまうものを出力してます。

Ruby 1.8.7 では変換できない文字はありませんでした。

require ‘nkf’
(0xf0…0xf9).each do |c1|
(0x40…0xfc).each do |c2|
next if c2 == 0x7f
cp932 = [c1, c2].pack(“C*”)
cp50221 = NKF.nkf(“-m0x --ic=cp932 --oc=cp50221”, cp932)
cp932_bak = NKF.nkf(“-m0x --ic=cp50221 --oc=cp932”, cp50221)
if cp932_bak.empty?
puts [cp932.unpack(“H*”), cp50221.unpack(“H*”)].join(" ")
end
end
end