From: Martin Duerst Date: 2008-01-30T14:19:31+09:00 Subject: [ruby-dev:33521] nkf の CP932 成瀬さん、皆さん、こんにちは。 CP932 の周りの文字コード変換を検討したところで、 http://nkf.sourceforge.jp/ucm/cp932.ucm をベースにしたいと思いましたが、 いくつか気になった点があります。ご意見・アドバイスをお願いします。 1) Private Use Area の使用: \xF0\x40 |0 # PRIVATE USE AREA から \xF9\xFC |0 # PRIVATE USE AREA までに 7778行目から 9657行目までに 計 1880個あります。 これは下手するとゴミをばらまくだけなので、止めたいと思っています。 2) 完全にデータを失う fallback。例えば \x21 |1 # INVERTED EXCLAMATION MARK とか \x41 |1 # LATIN CAPITAL LETTER A WITH GRAVE のように、文字が明らかに違うのに、fallback mapping を 行っているところは止めたいと思っていますが、どうでしょうか。 (そもぞもこれは多分 Microsoft のある API のある使い方によって、 fallback 付きのデータになってしまったと思います。) (fallback は又別途に色々考えられると思いますが、単なる文字コード変換 とは別に考えた方がいいと思います。) 完全には未だ分かりませんが、多分 http://nkf.sourceforge.jp/ucm/SJIS-nkf.ucm と同じぐらいの |1 のケースがのこるかと思います (主に SJIS 系で事実上全角と 半角があるのに Unicode にその区別がない少数の記号だけ)。 3) 最初のバイトが ED/EE と FA/FB/FC とダブっているものがずいぶん多いが、 これは http://www.microsoft.com/globaldev/reference/dbcs/932.mspx にもそのまま載っているので残しておこうかなと思います。例: \xFC\x47 |0 # CJK UNIFIED IDEOGRAPH \xEE\xE8 |3 # CJK UNIFIED IDEOGRAPH 一回 UTF-8 とかに変換すると結果として FA/FB/FC の方が残ります。 極めて少数ですが、 \x87\x82 |0 # NUMERO SIGN \xFA\x59 |3 # NUMERO SIGN 見たいに 87 と FA にあるものもあります。この場合に 87 が優先されます。 [もっとひどいとして、 \x81\xE6 |0 # BECAUSE \x87\x9A |3 # BECAUSE \xFA\x5B |3 # BECAUSE のケースもあります。] 他にいいアドバイスがあれば是非お願いします。 Martin. #-#-# Martin J. Du"rst, Assoc. Professor, Aoyama Gakuin University #-#-# http://www.sw.it.aoyama.ac.jp mailto:duerst@it.aoyama.ac.jp