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

Ryouichi Matsuda r-matuda @ sra.co.jp
2003年 2月 10日 (月) 17:30:51 JST


松田亮一です。

On Mon, 10 Feb 2003 16:44:16 +0900, T.Suzuki wrote:
> 7.2のJDBCで,正しく動作していた時の状態を整理してみました.
> 
> DB       JDBC       Tomcat(JVM)          HTML
> --------|------------|----------------------------|------------
> EUC_JP → EUC_JP → EUC_JP:UNICODE:EUC_JP → EUC_JP

おお、とても判りやすいですね。


> 7.3のJDBCを使用して,正しく出力できた時と文字化けの環境は,以下の通りです.
>   DB              JDBC       Tomcat(JVM)    
> HTML
> --------------------|------------|---------------------|------------
> ×EUC_JP:UNICODE → UNICODE → UNICODE:EUC_JP → EUC_JP
> ○EUC_JP:UNICODE → UNICODE → UNICODE:Shift_JIS → Shift_JIS
> 
> 7.3より,JDBCで"set client_encoding = 'UNICODE'" を実行している事から
> バックエンドとフロントエンド間での自動エンコーディング変換が使用されている
> 為,機種依存文字のエンコーディング箇所が,JVMとPostgreSQLの2箇所で行な
> われています.

PostgreSQL JDBC付属のサンプル、"example.psql"をLinuxのコンソールで
実行しても、"−"や"〜"などで変換エラーになってしまいました。
Windowsのコンソールから実行すると大丈夫でした。

EUC_JP=UNICODEのマッピングが、PostgreSQLとJavaで異なっているように
思います。PostgreSQLの方はJavaで言うところの、SJIS ではなく MS932 と
互換性があるような感じです。(うーん、なんとか暇を作って調べてみます)


> マニュアルを読み返してみると,UNICODEの変換テーブルは
> "-enable-unicode-conversion "
> の指定が必要との事で,再インストールを行ってみました.

7.3からは、この指定は不要になりました。必要に応じて、ダイナミック
ローディングされたはずです。

___________________________________________________________
 Ryouichi Matsuda  (http://www.sra.co.jp/people/r-matuda/)




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