[pgsql-jp: 28992] Re: 7.3.xのJDBC ドライバで,特定文字のみ文字化け

Ryouichi Matsuda r-matuda @ sra.co.jp
2003年 2月 10日 (月) 11:42:16 JST


松田亮一です。

On Fri, 7 Feb 2003 19:31:44 +0900, T.Suzuki wrote:
> PostgreSQLのバージョンアップとJDBCの違いで,化けたり化けなかったり
> 変化したので,JDBCが悪いのではと疑ってしまいました.
> 残念ながら,JDBCを入れ替えると文字化けが何故発生するかの原因は理解
> 出来ませんでした.7.2用のJDBCとEUC-JPの組み合わせで動いていたのが偶然
> だったのでしょうか….
> (7.3.2で作成したJDBCは確実にUNICODEに変換した文字を返していました)

ざっくりとJDBCのソースを読んでみました。

7.2のJDBCでは、DBの文字エンコーディングに合わせて、PostgreSQLとの
通信に使う文字エンコーディングを選択していました。鈴木さんの環境
では、EUC_JPで通信していたと思います。

7.3のJDBCでは、接続直後に "set client_encoding = 'UNICODE'" という
SQLを実行して、PostgreSQLとの通信を強制的にUNICODEに変更して、通信に
使う文字エンコーディングも UTF-8 にしていました。

org.postgresql.jdbc1.AbstractJdbc1Connection#openConnection()
メソッドの、下の方の「haveMinimumServerVersion("7.3")」の部分です。

なんとなくですが、この辺りのUNICODE変換で、"−"や"〜"などの互換性が
なくなる経路を通っているのではないかと、思います。




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