- - PR -
JavaからのDB操作による文字化け
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-09-03 12:20
はじめて投稿させていただきます。
JavaからPostgreSQLを利用した際に日本語の文字化けを起こしてしまいます。 文字化けする内容は日本語部分がすべて?????になることです。 何か変な文字ではなくすべて?になります。 環境は TurboLinux 8.0 Tomcat 4.1.24 JDK 1.4.2 PostgreSQL 7.3.4 です。 インストールは普通に行いましたがantを入れていないのでJDBCは下記から ダウンロードしたものをそのまま利用しています。 http://jdbc.postgresql.org/download.html ↑ pg73jdbc3.jar SSHからpsqlにてそのまま利用すると日本語も文字化けしないでそのまま きちんと表示されます。 showでクライアントエンコードを確認するとEUC_JPになっています。 また、ウィンドウズのアプリのCSEというのからアクセスをし同じ動作を 行った際にも特に文字化けを起こしません。 原因はJavaにあると思いますがDBへのアクセスはJakartaのDBCPを利用し JSPのページエンコードはShift-JISにしています。 DBCPは下記サイトの内容とほぼ同じでコード内にエンコードの処理を 記入しているところはありません。 http://www.mobster.jp/wiki/index.jsp?pid=Commons エンコード自体はどこも変更していないのでデフォルトのままであると思います。 initdbの際にはEUC_JPを付加しています。 気になる点はinitdbの際に--no-localeの指定ができなかったことくらいです。 ご教授いただければと思います。 よろしくお願いします。 | ||||||||
|
投稿日時: 2003-09-03 12:33
mm様はじめまして!
回答でなくて本当に申し訳ございません。恐らく記述上の問題と思いますが Shift_JIS EUC-JP だったと思います。これ(_ or -)紛らわしいですよね。 [ メッセージ編集済み 編集者: Ken-Lab 編集日時 2003-09-03 12:37 ] | ||||||||
|
投稿日時: 2003-09-03 17:00
Ken-Lab 様
返信ありがとうございます。 最初はそれだと思っていたのですが 実際ページエンコードを <%@ page contentType="text/html; charset=EUC-JP" にしてEUCにしても ???の文字化けのままになります。 実際どのようにページが遷移しているかというと JSP → Servlet → PostgreSQL → Servlet → JSP という流れをたどっています。 もちろんDBから引っ張ってきたデータ以外はきちんと表示されています。 他に考えられる原因は何かありますか? よろしくお願いします。 | ||||||||
|
投稿日時: 2003-09-03 21:41
Ken-Lab 様
かなり見当違いな返答をしてしまいました。 手法ではなく書き方のことでしたね。すみません。 とりあえずSQLを流して得たデータを直接アウトプットしても ????なのでJDBCの部分でなにか起きているのかと思います。 ドキュメントを参照していて、また少しいじってみようと思います。 何かおわかりになりましたらご教授いただければと思います。 よろしくお願いいたします。 | ||||||||
|
投稿日時: 2003-09-03 22:17
いや〜即答できなくて申し訳ない!
というのは、一昨日までRHL8をインストールしてあったPCにFreeBSDを入れてしまったんで 大慌てでLinux8 + j2sdk + PostgreSQL + Tomcat4.1 + JDBC の環境を構築してます。 ちょっと確認まで時間がかかりそうなので、何かわかりましたらレス入れま〜す。 JDBCの問題 > 当たりかもしれませんね、恐らく。 # 可能性は低いと思いますが、どこかでISO8859_1になっているかな〜? [ メッセージ編集済み 編集者: Ken-Lab 編集日時 2003-09-03 22:20 ] | ||||||||
|
投稿日時: 2003-09-04 01:06
Ken-Lab 様
ありがとうございます。 とりあえずJDBCがらみをいろいろ調べております。 PosgreSQLの日本語サイトに7.3.4のドキュメントが あり、そちらにマルチエンコードについて いろいろと書いてありましたので明日実践 してみようと思っています。 今気になっているのはデータ登録をCSEというので一括で CSV登録をしたのも気になっているのでpsqlからの登録と Java経由での登録とでさまざま比較してみようと思います。 なにかわかりましたらお教えください。 よろしくお願いします。 | ||||||||
|
投稿日時: 2003-09-04 11:13
こんにちは。Ken-Labです。
経過報告ということで・・・。なんとなく文字エンコードがどこかで誤って判別されるように 思われます(JDBCの問題か、設定の問題か?)。かなり荒っぽい実験ソースでなんですが、 これで日本語の読み書きができました。 書き込み用JSPソース
読み込み用JSPソース
# DBにはISO8859_1(?)で記録されてしまうので、psqlによる管理はできないかも [ メッセージ編集済み 編集者: Ken-Lab 編集日時 2003-09-04 11:46 ] [ メッセージ編集済み 編集者: Ken-Lab 編集日時 2003-09-04 16:56 ] | ||||||||
|
投稿日時: 2003-09-04 13:31
間違いであったらすいません
apacheのhttpd.conf内にDefaultCharsetと言う項目があります この項目の設定をEUC_JP等に変えてみるのはどうでしょうか | ||||||||
