- ベストアンサー
Tomcat6.0で日本語が?に文字化けしてしまう原因とは?
- Tomcat6.0で日本語や2バイト文字が文字化けしてしまう原因を解説します。
- IEの画面でHelloWorld!!が?????????と表示される現象の原因と解決方法について詳しく説明します。
- JavaのサーブレットでHelloWorldを表示する際、文字化けが発生する場合の対処法を解説します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
>out.println("HelloWorld!!縺ッ繧阪≦繧上?繧九←??シ?); >警告:この文字は、エンコーディング MS932 にマップできません というエラーがでるということは コンパイルはMS932(いわゆるWindowsのShift_JIS)で行われているようです。 となると、 >UTF-8で保存って、そもそもどうしたら良いのでしょうか。。 UTF-8というよりMS932で保存されていれば化けないように思います。 で、よくよく考えてみたのですが、 Servletでキャラクタセットを指定していないために out.printlnの送出が正しい文字コードで行われていない気がしてきました。 保存や、コンパイルは元のままで結構ですので 試しに下記一文を response.setContentType("text/html; charset=Windows-31J"); >PrintWriter out = response.getWriter(); の上あたりに加えてみて頂けますか。 おそらくこれで上手くいくと思います。
その他の回答 (1)
・javaファイルの文字コードとコンパイル時の文字コードが異なっている ・コンパイルは正しく行われているが、レスポンスヘッダもしくはMETAタグでキャラクタセットを指定していないためにIEが文字コードを正しく解釈していない →こちらはIEメニューバーの「表示」→「エンコード」で「シフトJIS」「EUC」「Unicode(UTF-8)」あたりをやってみれば良いでしょう。 これで何れも化けるのでしたら、先にあげたコンパイル時点での文字コード指定が誤っているのだと思います。
お礼
IEからエンコードしましたが、変わりませんでした。 コンパイルは正常終了します。 IEでのソースが <html> HelloWorld!!????????? </html> となっていました。 IE側での問題ではなさそうですね。 どうもありがとうございます。 >javaファイルの文字コードとコンパイル時の文字コードが異なっている 多分こちらが問題なのかなと思います。 確かに、通常のメモ帳ってSJISですよね。 そこで、UTF-8に変換してから上書き保存しました。 文字が化けましたが・・・。 out.println("HelloWorld!!縺ッ繧阪≦繧上?繧九←??シ?); 警告:この文字は、エンコーディング MS932 にマップできません とコンパイルエラーが出ました(当然?) UTF-8で保存って、そもそもどうしたら良いのでしょうか。。 メモ帳はsakuraを愛用しております。 http://members.at.infoseek.co.jp/sakura_editor/snapshot.html あまり好きではないのですが、 秀丸も少しだけ使ったことあります。 申し訳ありませんが、よろしくお願いします。
お礼
できませんでした! と思ったらTomcat再起動してませんでした。 無事表示されました! 本当にありがとうございます。 実はエクリプスと一緒に使っていて、 その辺の連携ができてないんじゃないかとか バージョンの相性があるのかとか そもそもインストールが間違ってるんじゃとかいろいろ考えました。 (インストールするだけの段階でかなり挫折気味でした・・・) ツールって便利ですけどたくさん使うとどこでダメになってるのか分かりませんね(笑 むっちゃめんどくさかったけど楽しーですね