• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:文字化け MySQL Java JSP サーブレット)

MySQL文字化け問題の解決方法とは?

このQ&Aのポイント
  • MySQLを使用している際に文字化け問題が発生する場合、全角日本語が半角ハテナに変換される現象が起きます。この問題の解決方法としては、MySQLの環境設定の確認や文字コードの変更が必要です。
  • 具体的には、MySQLの環境設定で使用している文字コードを確認し、文字化けが発生しているテーブル列の文字コードも変更する必要があります。また、接続するクライアントの文字コード設定も確認し、一致しているかどうかも重要です。
  • 文字化け問題の解決方法としては、sjisやutf8などの適切な文字コード設定を行い、必要に応じて文字列のエンコーディングを行うことが大切です。また、文字コード変換ライブラリの使用や、データベースへの登録時や取得時に文字列を正しくエンコーディングする処理を実装することも有効です。

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

  • ベストアンサー
  • x_jouet_x
  • ベストアンサー率68% (162/236)
回答No.2

回答が遅くなりました。すみません。 私もnovi_21さんと同様の環境を持っていればもっと的確な回答をできるのですが、なにぶん私はLinux上での環境を使用していますので…。 > 文字コード変換に関する処理はしていません 文字コード変換についてはResultSetオブジェクトでgetString()メソッドを使用して取得した文字列に対して行います。 例えば、 ResultSet rs = .....; ..... String result = rs.getString("hogehoge"); String newResult = new String(result.getBytes(ISO-8859-1), "MS932"); // 文字コード変換 上記のように記述します。 状況を拝見する限り、DBから結果を取得するときに文字コードがおかしくなっている気がします。 DBから取得した文字列をSystem.out.println()等でコンソール出力してみて、それが文字化けしていないか確認してみて下さい。 追記: 回答になってなくて申し訳ないです。

noname#106387
質問者

お礼

いえいえいえいえ、回答いただけるだけでとても有難いです。 遅くても全然だいじょうぶです。 SQLでDBから値を取得した直後のところで System.out.println()を使って表示させてみると文字化けは起こりませんでした。 とにかく色々なところで表示させてみて実験したところ、 サーブレットでapplicationスコープに入れてから、 JSPで取り出した後に文字化けが起こっているようです。 教えていただいた new String(name.getBytes("ISO-8859-1"), "Windows-31J"); を使ってみたところ、ハテナの文字化けのままでしたので、 <%= name.getBytes("ISO-8859-1") %> で表示してみたところ、 [B@c8d62f (イチロー) [B@165d118 (中島) [B@18297fe (青木) など最初に"[B@"が付く特徴的な文字列が表示されました。 getBytes()はByte型の配列を返すようなので、 配列を表示させているので変になっていて意味ないことをしたかもしれません。 スコープ。。。 ソースだけじゃなくてtomcatの設定などにも関係してくるのでしょうか。 また回答いただけると嬉しいです。よろしくお願いします。

その他の回答 (1)

  • x_jouet_x
  • ベストアンサー率68% (162/236)
回答No.1

View(JSP)はどの文字コードを使用して表示していますか? DBから結果を取得するときに文字コード変換か何かの処理をしていますか?

noname#106387
質問者

お礼

ご回答ありがとうございます。 文字コードを指定している部分を抜き出しました。 View(JSP) <%@page contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J"%> <%@page import="JavaBeansのクラス名" %> <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J"> <%request.setCharacterEncoding("Windows-31J");%> <%= JavaBeansのクラス名.getメソッド名() %> ↑ 文字化けしています。 >DBから結果を取得するときに文字コード変換か何かの処理をしていますか? SQLを発行しているメソッドでは特に文字コード変換に関する処理はしていません、し、どんな処理が出来るのか方法がわかりません>< ハテナになるのはサーブレットで文字化けしていると書いてある資料を見ましたが、何かヒントにならないでしょうか??? 回答でなくてもヒントや試してみたらどうかというアドバイスでも何でも有難いので、よろしくお願いします。