[pgsql-jp: 25240] Re: Windows上JDBC でのエンコーディング
Eiji Tokuya
e-tokuya @ sankyo-unyu.jp
2002年 3月 12日 (火) 10:10:42 JST
徳家です。
結構悩まれていますね。(^^;)
私もそうでした。
> 田中 良浩 です。
>
> On Mon, 11 Mar 2002 21:35:41 +0900
> TANAKA Yoshihiro <ytp @ vc-net.ne.jp> wrote:
>
> >事の発端は、
> >「〜」の文字(シフトJISの0x8160)が
> >ストリーム上→ JDBC →アプリケーション
> > 0x8160 U+301C U+301C→U+FF5E
> >ではなく
> > 0x8160 U+FF5E U+FF5E
> >と渡って欲しい、ということでした。
>
> たくさんの方からご指摘を頂き、
> 少なくとも今回私がやりたかったことは
> 次の方法で出来ることを確認いたしました。
> そもそもは、一発目の石井さんの返信の「charSetの部分」を
> 試していなかったのが敗因でした。
>
> ■ソース(変更部分)
> String server = "jdbc:postgresql://atak:5432/begin?charSet="
> + System.getProperty("file.encoding");
> con_ = DriverManager.getConnection(server, "ytp", "");
>
> ■結果
> C:\Source\Java>java ytp.test.TestPostgre
> server=jdbc:postgresql://atak:5432/begin?charSet=MS932
> dbEncoding=SJIS encoding=MS932
> encoding on PC=MS932
> カーネーション
> かすみ草
> バラ
> 桃の花
> 東京〜新大阪
>
> このソースにまだ問題があることは認識しています。
> 「送られて来る文字がEUCだったらどうすんねん」とかです。
> それは別途修正するつもりです。
>
> お騒がせして本当に申し訳ありませんでした。>皆さん
> ------------------------------------
> 田中 良浩(TANAKA Yoshihiro) / 日本インターシステムズ(株)
> E-mail:tanakay @ nisz.co.jp -------------------------------
なぜ「〜」をU+301Cと変換してしまうかですが、変換テーブルのUnicodeバージョン
をご覧になれば、なんとなくおわかりいただけると思います。
UNICODEサイトにおける、SHIFTJIS.TXTはUnicodeのバージョンは1.1で、1.1にある文
字の範囲で、極力似た文字を選択したものですね。
ですから、これは正しく表現できてない文字も沢山あります。またマッピングテーブ
ルのバージョンも0.9と仮定のものです。
しかしこのマッピングを採用したものも多いので、そのまま生き残っています。
よって、JavaなどではSJIS(SHIFTJIS.TXT)とMS932(CP932.TXT)に分けることで対処し
ています。
CP932.TXTはUnicode2.0で、このUnicode2.0ではいくつかの追加文字にあわせ、マイ
クロソフトが自分たちの使っている多カ国語文字をUnicodeに申請して無い文字を追
加してもらっています。
ちなみにMacの機種依存文字はUnicode2.1で追加されて、JIS規格部はSHIFTJIS.TXTで
はなくCP932.TXTにあわせ、別にマッピングテーブルJAPANESE.TXTを公開していま
す。
Unicodeの対応バージョンの違いですね。
JavaともPostgreSQLとも違う文字コードの歴史が原因の話です。
順を追って考えればなんということない話なのですが・・・・・、ややこしいですよ
ね。
徳家
pgsql-jp メーリングリストの案内