[pgsql-jp: 26959] Re: 日本語文字化けについて
rio-t @ presen.to
rio-t @ presen.to
2002年 8月 9日 (金) 02:00:27 JST
こんにちは、高石です。
From: "bankeumryang" <bankr @ starweb.ne.jp>
Subject: [pgsql-jp: 26955] Re: 日本語文字化けについて
> > 1.initdb -E EUC_JP を実行
> この部分はただinitdbだけ実行したんですがデータベース作成後文字環境をEUC_JPに
> してあげたんですがためですか?必ず1番のようにしなければいけないでしょうか?
psql -l
として、Encoding が EUC_JP と表示されれば DB の方のエンコー
ディングは問題ありません。
もしここで SQL_ASCII などと表示されるようなら、
createdb -E EUC_JP dbname
のように、DB 作成時にエンコーディングを指定して作成する必要
があります。
# initdb -E EUC_JP としてあれば、createdb で エンコーディン
# グを指定しなかった時に標準で EUC_JP となります。
ですが、おそらく問題があるのは DB のエンコーディングではなく
クライアント側のエンコーディングの設定でしょう。
psqlで、
show client_encoding;
としてみて下さい。
NOTICE: Current client encoding is 'EUC_JP'
と表示されませんか?
この場合、そのpsql上から、SQLを発行して日本語をインサートし
た場合、入力された文字列が EUC_JP であるものとして扱われます。
また、同じくそのpsql上で select してレコードを表示した場合に
出力される文字列も EUC_JP で返ってきます。
# 例えば、client_encoding が SJIS だった場合、文字列をインサー
# トした時に、SJIS -> EUC_JP の変換が自動的に行われて DB に
# 格納され、select した時には、EUC_JP -> SJIS の変換が自動的
# に行われてから出力されます。
Ret HatのマシンからpsqlでSQLを発行した場合に文字化けしなかっ
たというのは、Red Hat(というかLinux)では日本語は普通 EUC_JP
を使うので、たまたまそれが client_encoding の設定と一致して
いたということでしょう。
解決方法としては、文字化けするクライアントで使用する文字コー
ドを client_encoding に合わせてやるか、あるいは逆に、使う文
字コードに合わせて client_encoding を設定してやる必要があり
ます。
具体的な方法については、私はJDBCを使っていないので、詳しいこ
とはわかりませんが、JDBC client_encoding postgresql あたりを
キーワードに検索してみれば、いろいろみつかるでしょう。
あと、http://java-house.jp/ml/topics/ の「JDBC」の項目も参考
になるかもしれません。
/--------------------------------------------------------/
高石 勇人 < rio-t @ presen.to >
PGP Key(RSA): http://rio-t.presen.to/pgp/mykey.asc
(DSS): http://rio-t.presen.to/pgp/mykey-dss.asc
/--------------------------------------------------------/
pgsql-jp メーリングリストの案内