From: ishida@... Date: 2008-05-01T11:40:21+09:00 Subject: [ruby-list:44879] Re: NKFでの文字変換について --=_alternative 000EAE464925743C_= Content-Type: text/plain; charset="ISO-2022-JP" 成瀬さん、お世話になりました。 下記のように変更し、0x2015に変換できるようになりました。 #! ruby -Ku require "nkf" utf8 = "—" utf16le = NKF.nkf("-W80w16L -xm0 --no-best-fit-chars", utf8) open("./utf16le.txt", "wb") do |f| f.print utf16le end ありがとうございました。石田 "NARUSE, Yui" wrote on 2008/05/01 00:39:16: > 成瀬です。 > > ishida@topics.or.jp wrote: > > NKFで"—"をUTF−8(0xE28095)からUTF−16LEに変換したときに 、 > > "—"(0x2015)に変換されずに、"?"(0x2014)に変換されます。 > > ※ソースコードは以下です。 > > > > バグだと思うのですが? > > どうしたら良いでしょうか、教えてください。 > > UTF-8 から UTF-16 への変換等における罠だとは思っているのですが、 > 一応仕様という認識です。 > > 理由としては nkf ではこれを始めとして、CP932 拡張周りの文字を中心に、 > 日本語文字コードと Unicode で多対一対応な文字が多々あるのですが、 > これが Unicode 間での変換でも動いているからです。 > > とりあえず意図しているであろう動作にするためには、 > -xm0 --no-best-fit-chars を加えればよいです。 > > utf16le = NKF.nkf("-xm0 --no-best-fit-chars --ic=UTF-8 --oc=UTF-16LE", utf8) > が見やすいかな > > -- > NARUSE, Yui > --=_alternative 000EAE464925743C_=--