From: NARUSE Yui Date: 2006-09-15T15:50:04+09:00 Subject: [ruby-list:42809] Re: KconvはBMP外の文字を扱えない? 成瀬です。 Masahiro Sakai wrote: > もし難しくないのであれば対応して欲しい、と個人的には思います。 > > UTF-8とUTF-16のの変換で情報が落ちるとは普通考えないため、 > 現在の仕様だと、知らない間にデータを失ってしまいそうで怖いです。 > また、JIS X 0213 対応はともかく、UTF-8とUTF-16の変換は、 > (Uconv等ではなく)標準ライブラリだけで出来て欲しいですし。 nkf 2.0.8 2006-09-15 で BMP 外と UTF-32 に対応しました。 また、1.9 にはこれを取り込みました。 なので、現在の 1.9 では、 Kconv.kconv([0x1D516].pack("U"), Kconv::UTF16, Kconv::UTF8) => "\3305\335\026" Kconv.kconv("\xd8\x35\xdd\x16", Kconv::UTF8, Kconv::UTF16) => "\360\235\224\226" Kconv.kconv("\xfe\xff\xd8\x35\xdd\x16", Kconv::UTF8, Kconv::UTF16) => "\360\235\224\226" という意図したとおりの結果になります。 これで U+D800-U+DFFF, U+FEFF, U+FFFE を除いた多くの BMP にある文字、 及び BMP 外の文字は UTF-* to UTF-* の変換では素通しされるはずです。 例外が以下のオプションに絡む文字ですが、 これも NKF モジュールを使って指定すれば素通しできます。 * -m0 * -x * --no-best-fit-chars 既知のバグは * UTF-32 を --ic で指定できない * UTF-16 と UTF-32 の guess ができない ですが、これらはすぐに直します。 -- NARUSE, Yui DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA