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