[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 メーリングリストの案内