[pgsql-jp: 28832] 字化けが起こります

stogashi stogashi @ nifty.com
2003年 1月 29日 (水) 16:00:05 JST


冨樫と申します。
Java Servlet/JSPとpostgreSQLの連携で字化けで困っています。

1.Java Servlet/JSPでDBの「商品テーブル」に商品を登録するアプリケーションを
作成していますが、漢字が字化けして困っています。
登録時の画面には正しい漢字が表示されるのですが、DBへの書き込みとそれ以降の
DBからの読み込むとまったく違った文字コードになっています。


環境:WindowsXP Professional, Apache1.3.27 , Tomcat4.0.6 , J2sdk1.4.0_01 ,
   cygwin1.3.12 , postgreSQL7.2.2 ,
     pg73jdbc2.jarをJ2sdk1.4.0_01\jre\lib\extとwebアプリケーションのディレクトリ
\WEB-INF\libに配置。


(1)次のような流れで「商品テーブル」にInsertされています。
   JSP(A)で入力画面を表示
  ・エンコーディングの設定:<%@ page pageEncoding="Shift_JIS"
contentType="text/html; charset=Shift_JIS"
   ↓
   Servlet(B)でパラメータを取得し、チェック
    ・エンコーディングの設定:request.setCharacterEncoding("Shift_JIS");
   ↓
   JSP(A)で再表示
   ↓
   「登録」ボタンを押す
   ↓
   Servlet(B)から Beans(C)を呼び出してBeansでDBの「商品テーブル」にInsert
    ・Beansではエンコーディングに関しては何も設定していない。
    
   ここで 「Unterminated quoted String」というエラーが発生。
   特定の漢字が字化けを起こしています。

    例:埼→? 玉→? 野→愉 井→紋 日→? 部→?


(2)たまたま字化けしない漢字だけの場合はDBにInsertできます。
    しかし、postgresqlのターミナルからselect * from table;でDBの内容を見ると
    字化けした様に半角カタカナや?や見たことのないような漢字になっています。


(3)DBのEncodingは \l で確認するとEUC_JPとなっている。
(4)環境変数 PGCLIENT は Shift_JIS で設定。

2.postgreSQLはunicodeのデータを書き込む(Insert)する時はEUC_JPで書き込んで
くれるのでしょうか。
  それともアプリケーションでコード変換をする必要があるのでしょうか。

3.postgreSQLのEUC_JPのものを読み込んだ場合はアプリケーションでunicodeに
  変換する必要があるのでしょうか。

4.アプリケーションを介さずにpsqlのターミナルから直接 Insert した場合は漢字
が普通の字として読める(Select * from 商品テーブル; で確認)のですが、アプリ
ケーションを介してその内容を問合せをすると漢字が字化けして????になります。
上記の JSP(A)のアブリケーションでコード変換しても全く字化けは直りません。

お手上げ状態です。
是非ご教示願いたく。


=====================================
 冨樫重春
  email : stogashi @ nifty.com
=====================================




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