ウォンツテック

そでやまのーと

JSP Servletで構築している場合、文字コードの問題が発生する場合があり、「〜」などの文字が化けたりする。
その場合にはDBをunicode(UTF-8)で生成するとよい。

createdb -E UTF8 database
postgresql

参考記事

文字化けは、データベース・アクセスでも発生することがある。
ここで問題となるのは、データベース本体がどのような文字コード
で構築されているかだ。

 データベースがUnicodeで構築されていれば、JDBCドライバは
JVM内部のUnicode文字をそのままデータベースに送ればよいため、
文字化けが発生することはない。しかしデータベースがEUC-JPや
Shift_JISで構築されていると、再びUnicode変換の問題が頭を
もたげてくるのである。

 さらに厄介なのは、JDBCドライバ固有の振る舞いが絡んで
くることだ。例えばPostgreSQL 7.3系のJDBCドライバでは、
データベースがEUC-JPで構築されている場合、Unicode変換に
「Windows-31Jと同じ変換ルール」を適用する仕様になっている。
つまりコードポイントU+FF5Eの文字をEUC-JPの「〜」に
割り当てるのである。そのため、例えば「Webブラウザの
フォーム入力をShift_JISでデコードする」「EUC-JPで
構築されたPostgreSQL 7.3.xにそれを保存する」といった
Webアプリケーションでは、「〜」などの文字化けが
発生してしまう。この場合、PostgreSQLUnicodeで構築するか、
各文字のコードポイントを強制変換するコードを挿入するなど
しなくてはならない。