[pgsql-jp: 29991] 【不具合報告】日本語マップの抜け落ち修正パッチ(7.3.X用)
MORIYAMA Masayuki
msyk @ mtg.biglobe.ne.jp
2003年 5月 19日 (月) 23:07:24 JST
はじめまして、森山と申します。
最初から、不具合報告で申し訳ありませんが、下記のページにある、
「日本語マップの抜け落ち修正パッチ(7.3.X用) 」で次のような不具合
と、不具合ほどの問題でなくパッチ自体の問題でもありませんが、
Windows のエンコーディング変換との動作の違いがありましたのでご報
告いたします。
[PostgreSQL Bank]
http://www.sankyo-unyu.co.jp/Pool/PostgreSQL.php
(1) UTF-8 ⇔ EUC_JP (eucJP-open/eucJP-ms) の UDC マッピングの不具合
・EUC(UDC) の最終バイトが 0xa1 となるべきものが 0xff となっている。
・EUC(UDC) の最終バイトが 0xa1 のコードが間違っている。
・EUC(UDC) の最終バイトが 0xa2 のコードが抜け落ちている。
・EUC -> UTF-8 で変換できないコードがあった。(配列の要素数の数
え間違いと思われます)
TOG 日本ベンダ協議会の次のマッピングをそのまま用いると間違い
は無いと思われます。(大文字のローマ数字、(株)、No.、TEL に関
して重複符号化されていますが、13区のNEC特殊文字を使うのが妥
当ではないかと思われます。現状もそうなっていますし。)
http://www.opengroup.or.jp/jvc/cde/appendix.html
※Microsoft Windows 3.51 式の変換 (eucJP-ms) のマッピングを使う。
(2) UTF-8 → SJIS (MS932) のマッピングに関して
・大文字のローマ数字および、(株)、No.、TEL のマッピングが、
Windows の WideCharToMultiByte() のマッピングと異なり、Java
の Cp943C コンバータと同一のマッピングとなっているようです。
Windows でのマッピングは次のようになっています。(大文字のロー
マ数字等は、NEC特殊文字の 13区を使う)
マイクロソフト サポート技術情報 - JP170559
[PRB] SHIFT - JIS と Unicode 間の変換問題
http://support.microsoft.com/default.aspx?scid=kb;ja;JP170559
上記の不具合および Windows のエンコーディング変換との不一致を修
正するパッチを次の場所に置いておきます。
http://www2d.biglobe.ne.jp/~msyk/software/postgresql-7.3.2.ja.diff.gz
※ postgresql-7.3.2 からの直接パッチになります。
パッチの当て方
postgresql-7.3.2
$ tar zxvf postgresql-7.3.2.tar.gz
$ zcat postgresql-7.3.2.ja.diff.gz | patch -p0
postgresql-7.3.1 (7.3 の場合も同様)
$ tar zxvf postgresql-7.3.1.tar.gz
$ cd postgresql-7.3.1
$ zcat ../postgresql-7.3.2.ja.diff.gz | patch -p1
UNICODE/EUC_JP の両データベースに対して、Windows-31J(MS932) で
ユーザー定義外字領域を含む文字定義のある全コードポイントについ
て、psql 経由で、UNICODE、SJIS(MS932)、EUC_JP(eucJP-open) のそ
れぞれで読み書きして、正しく変換される事を確認しました。
# Windows が採用している日本語EUC (コードページ 51932) は、いわ
# ゆる機種依存文字に関して、PosgreSQL が採用している TOG 日本ベ
# ンダ協議会の eucJP-open とは互換性が無いのが難点。
‖ 森山 将之 (MORIYAMA, Masayuki)
‖ E-Mail: msyk @ mtg.biglobe.ne.jp
pgsql-jp メーリングリストの案内