• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQLからのデータ取得で日本語が文字化けします)

MySQLからのデータ取得で日本語が文字化けする

このQ&Aのポイント
  • MySQLを使用してJavaでWebアプリケーションを作成していますが、データベースから日本語のデータを読み込む際に文字化けしてしまいます。
  • 接続URLや設定ファイルに文字コードを指定しているにもかかわらず、データの取得部分でのみ文字化けが発生します。
  • 原因は不明ですが、可能性としてはデータベースや接続設定の文字コードの設定が正しくないか、データベースとアプリケーションの文字コードの不一致が考えられます。

質問者が選んだベストアンサー

  • ベストアンサー
  • b-u-z-z
  • ベストアンサー率20% (1/5)
回答No.1

私も以前同じ現象で困りました。 原因はMySQLの4.1.7バージョンにあるらしいです。 どうしても4.1.7バージョンにこだわるなら以下のコードで対応出来たと思われます。 str = new String(str.getBytes("ISO-8859-1"), "JISAutoDetect"); ※str:MySQLから取得して文字化けしてしまうresultsetの項目 ちなみに私はMySQL4.0.21にバージョンダウンして、4.1.7の不具合対応がされるまで待っている状態です。

Prune1976
質問者

お礼

ありがとうございました。 結局私もバージョンダウンすることにしました。 そうすることで問題なく動きました。 うまくいった環境は以下です: OS:Windows XP ServicePack 2 Java:1.4.2_06 Tomcat:4.1.31 MySQL:4.0.22 MySQL Connector/J:3.0.16 かねやんMySQLAdmin(SJIS版):1.43

Prune1976
質問者

補足

b-u-z-zさん、ありがとうございます。 str = new String(str.getBytes("ISO-8859-1"), "JISAutoDetect"); この方法で文字化けを回避することができました。 しかし、特定の文字(表、ソなど)が文字化けする問題は解決しませんでした。 http://www.kent-web.com/pubc/jcode/ ここに書いてある問題です。 これはShift_JIS特有の問題であると思われるので、MySQLの文字コードをEUCに変更してみました。 そうすると今度は(表、ソ)などの文字も文字化けせずに表示できました。 ResultSet#getString()で取得した文字列に対して str = new String(str.getBytes("ISO-8859-1"), "JISAutoDetect"); といった変換も不要になりました。 ただ、MySQLのコマンドラインクライアントを使ってSELECT文でデータを表示すると日本語は文字化けします。コマンドプロンプトの文字コードがEUCに変更できないからです。 ちょうど昨日、MySQL Query Browserの一般提供が開始されたそうです。これを使うと文字化けしません。 英語版ですがなかなか使いやすいです。 残念なのは、クエリーを入力するところでは日本語が使えないことです。

関連するQ&A