- ベストアンサー
MySQLの文字化け
Win XP MySQL4.0.13 TOMCAT4.1 APACHE2 以上を使用して自宅にて開発を行っております。 HTMLページより入力されたデータをjspファイルへ渡し、jspファイル内へ記述されたSQL文によりデータベースへの書き込みを試みております。 データベースへの書き込み自体はできるのですが、文字化けで困っています。 書き込み後、プロンプトよりselect文で確認すると、日本語のみ文字化けし、アルファベットは大文字が小文字にところどころなってしまいます。数字は問題ありませんでした。 具体的には「あいうえお」が「BDFHJ」に文字化けしていました。 MySQLのコンソールのMY.ini Setuoタブに [mysqld] default-character-set=sjis [mysql] default-character-set=sjis と指定しており、HTML,jspファイル内でもshift-jisを指定しております。 ご教授よろしくお願いしたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 MySQLは問題なし。 OSも問題なし。 HTML、JSPも問題なし。 >>jspファイル内のrequest.setCharacterEncoding("SHIFT_JIS");をコメントアウトしたところ、データベースへの書き込みは正常にできましたが これが意味不明??? JSP内でエンコーディングしてたんですか? 後はserver.xmlにある、jdbc:mysql://~・・・を見てください。 ApacheとTomcatのデフォルトは問題ないですよね? それから、サーブレット内で変換したらどうなりますか? 例えば、 str = new String(str.getBytes("ISO-8859-1"), "JISAutoDetect"); 文字化けするstrを一度変換してみる。 多分最後のやつで解決しそうですが・・・? (^^ゞ
その他の回答 (2)
データベースに保存されたデータは文字化けしていませ んか? Apacheを利用したことがありませんので、jk2等の設定 に関して分かりませんが、html(jsp)、jdbc、db-client 、db-serverのキャラクタセットを全てあわせなければ 文字化けになってしまいます。
補足
ご指摘ありがとうございます。 当初データベースへの書き込みが文字化けしていたのですが、jspファイル内の request.setCharacterEncoding("SHIFT_JIS"); をコメントアウトしたところ、データベースへの書き込みは正常にできましたが、同ファイル内でHTMLによる表示の際に文字化けが発生するようになっていしまいました。 以前とは逆になってしまったのです。 db-client、db-serverについてですが、apache等も含めすべて一台のマシン上で行っております。db-client、db-serverのキャラ設定を合わせるというのは、ファイル内での指定という事でしょうか?それともMysql自体の設定が他に必要なのでしょうか? よろしくお願いいたします。
- taka451213
- ベストアンサー率47% (436/922)
こんにちは。 後考えられるのは、JAVA側のエンコーディング設定だと思われますが・・・。 ApacheとTomcatはどうですか? (^^ゞ
補足
ご指摘ありがとうございます。 jspファイル内での request.setCharacterEncoding("SHIFT_JIS"); をコメントアウトしたところ、データベースには正常に書き込みできるようになりました。 しかし同じjspファイル内にHTMLを記述し、書き込み内容を表示させていたのですが、今度はそれが文字化けしてしまうようになりました。 Mysql,HTMLファイルではShift_JISを指定し、jspファイル内においても <%@ page contentType="text/html; charset=Shift_JIS"%> のようにすべてShift_JISで指定しているのですが、ほかに何か原因は考えられるでしょうか? 引き続きよろしくお願いいたします。
お礼
お礼が遅くなり申し訳ありません、問題解決致しました。ありがとう御座いました。