[pgsql-jp: 25274] Re: Unicode マッピングの問題

Eiji Tokuya e-tokuya @ sankyo-unyu.jp
2002年 3月 13日 (水) 18:35:06 JST


徳家です。

> 加澤です。

> 上記ページでも、[pgsql-jp 21134] にも徳家さんが書かれていますが、
> このパッチを本家に merge できない、という点は非常にもどかしいです
> ね。backend が Unicode の場合、EUC_JP 系クライアントと SJIS 系
> クライアントを混在させるためには、双方 JIS 系のマッピングを使うか、
> 双方 CP932 系のマッピングを使うしかないはずで、現在 Shift JIS コ
> ンバータとして CP932 系しか選択できないとすると、上記パッチは本来
> 必須なはずです。

確かにこのようなパッチがないと厳しいものがありますよね。
# 加澤さんは、「UNICODEマッピングパッチ」を拾っていったのかな?
かといって、石井さんの

> 私としては,マッピング表をUnicodeの規定するものから掛け離れたものにす
> るのは抵抗があります.本来マッピング表も含めてUnicodeの規格のはずです
> から.

というのも確かでしょう・・・。

> ですが,マッピング(コンバータ)を複数用意するのには賛成です.ただ,現在
> のアーキテクチャでこれをやろうとすると,むやみにPostgreSQLのロードモ
> ジュールがでかくなってしまうのが難点です(ロードモジュールがでかくなっ
> ても性能には関係ないからいいという意見もあるようですが).

これも私は考えていました。
Big5とSJISのクライアントで同じデータベースを利用しょうとしても
現在のPostgreSQLの場合まともに利用できません。
いっしょに使うといっても変換可能な2つのエンコーディング程度で
事足ります。
ですから、利用者が必要なマッピングをconfigure時に選択できるよう
にすればロードモジュールが大きくなることもないでしょう。

しかし利用者がどのエンコーディングが自分の希望する文字を扱える
エンコーディングなのか、また開発環境によってもエンコーディングの
呼び方が異なっては混乱することも多々あります。
(PostgreSQLでSJIS、JavaでMS932、PHPはSJIS-winと同じCP932
でもまちまちです。)
CREATE CHARCTER SETを使えば他の開発環境と呼び方を統一
できるでしょうけど、いまはまだ実装されていません。
(ソースをいじれば、エンコーディングのaliasは追加できますが・・・・。)

ですから、あまり増やしたくないというのもあります。

で、README.mb.jpを再度確認すると。
PostgreSQLの持っていたEUC_JP<->SJISの仕様つまり、PostgreSQL
におけるEUC_JPの文字はJISX0201+JISX0208+JISX0212に加えてこれ
らに無いCP932の文字が追加になっているという内容なのです。だったら
PostgreSQLのEUC_JPのマッピングを作る際、JIS0201.TXTとJIS0208.TXT
とJIS0212.TXTに加えCP932.TXTも取り込めばよい事になりますね。
このように、Unicodeのマッピングはいじらずに、PostgreSQL側の仕様を
トコトン洗い出した方法もあります。
これならUnicodeの仕様通りにPostgreSQLのこれまでのEUC_JPの
データベースのデータをUnicodeのデータベースに移しても情報資産を
正しく利用できるわけです。

この発想のものは、「エンコーディング追加パッチ」に同胞されています。
これでなんとか2002-03-06付けで本家のsnapshotに取り入れて
もらえました。(^^)v
# 『他の国のエンコーディングパッチに便乗した』とも
# とれなくもないけど。(^^;)

次の本家のリリースより早く必要な方は、
http://www.sankyo-unyu.co.jp/Pool/PostgreSQL.htm
のページ「エンコーディング追加パッチ」に置いてますので、どうぞ。
ODBCの対応パッチも付属しているし、JDBCの同パッチも別途
用意しています。
7.2の利用者はこちらのほうが、お得です。(^^)b



徳家




pgsql-jp メーリングリストの案内