From: "NARUSE, Yui" Date: 2008-01-07T19:01:03+09:00 Subject: [ruby-dev:32956] Re: Shift_JIS variants and UTF-16 support 成瀬です。 Martin Duerst wrote: >> (1) 現状のtranscodeがサポートしている「Shift_JIS」というのは、 >> 数多あるvariantのうちのどれでしょうか? > > 変換テーブルには nkf の http://nkf.sourceforge.jp/ucm/SJIS-nkf.ucm > を使っています。勿論こちらでバグが入ってしまった可能性もあります。 > 何か不都合なことがありましたら是非教えてください。 > > 問題が、いじる間に、メーリングリストの議論とテーブルのデータ > はどうも一致してないことに気がつきました。メーリングリストの > 議論では Shift_JIS は JIS が定義している純粋なものだという > 意見が強かったかと思いましたが、SJIS-nkf.ucm では少なくとも > 一部のベンダー外字が含まれている。その辺りを相談したいところで > 中村さんのメールがちょうどいいときに来ましたので是非意見を > お聞かせください。 Perl/Encode の Shift_JIS にあわせた方がいいような気もしたのですが、特別 問題もないと思ったので SJIS-nkf でもいいかなと思っていました。 この機会に SJIS-nkf について説明しておきますと、SJIS-nkf はかなりルーズ なマッピングで、ベンダー依存文字のマッピングが大量に入っています。ここに ついては nkf の見解としては「厳密性を求めるような encoding でもないし、 増える分には便利だからいいじゃん」というものなのですが、Ruby/transcode の方針は別にするのもありでしょう。 なお、Perl/Encode の Shift_JIS とのマッピングの違いのうち、単純な追加で ないものは以下の通りで、これらについては Perl/Encode よりも JIS の公開し ているマッピング寄りに倒しています。 ucm\shiftjis.ucm と ucm\SJIS-nkf.ucm を比較中... 143c146,147 < \x81\xCA |0 --- > \x81\xCA |1 > \x81\x50 |1 265c270,271 < \x81\x5C |0 --- > \x81\x5C |0 > \x81\x5C |1 7079,7080c7544,7549 < \x81\x50 |0 < \x81\x8F |0 --- > \x81\x50 |1 > \x81\x8F |1 ファイル比較終了. ついでに書いておきますと、EUC-nkf は nkf デフォルトの EUC-JPで、基本的に は eucJP-ascii なのですが、3bytes になってしまう範囲は CP51932 を 用いている変則的な encoding です。入力に関しては 3bytes も受け取ります。 http://nkf.sourceforge.jp/ucm/eucJP-nkf.ucm もしかしたら Ruby では eucJP-ascii の方を「EUC-JP」で参照した方がいいか もしれません。 http://nkf.sourceforge.jp/ucm/eucJP-ascii.ucm http://home.m05.itscom.net/numa/cde/ucs-conv/ucs-conv.html # eucJP-ascii TOG/JVC CDE/Motif 技術検討 WG の定めた、eucJP-open と Unicode 間のコード変換規則で、「JIS X 0221 式の変換 (ASCII と併用する場 合)」。 このような微妙さができているのは、そもそも JIS の公開している Shift_JIS と EUC-JP の変換マップが円記号問題のせいで絶望的に使えないために、どうし てもそのまま用いることができないからです。それを踏まえた上でどのような変 換表を「Shift_JIS」と「EUC-JP」に割り当てるかは頭の痛い問題です。 >> 年末にWindows-31Jを入れたので、サポートしたいというかして >> ほしいというかそう思っているのですが... > > こちらもそう思っています。既に CP932 のデータを色々いじっています > (http://nkf.sourceforge.jp/ucm/cp932.ucm をベースにして)。 CP932 のテーブルは Perl/Encode と一致していたか、Windows が実際に行う変 換を調べてそれを基に作ったかのはずなので、まず問題はないはずです。 -- NARUSE, Yui DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA