• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:文字化けで困っています。)

文字化けで困っている人必見!文字化けの原因と解決方法

このQ&Aのポイント
  • JSPでrequest.getParameterを使用している際に起こる文字化けの原因と解決方法について教えてください。
  • eclipse 3.5で文字化けが発生している場合、何が原因である可能性があり、どのように解決したら良いのか知りたいです。
  • 文字化けが起こるJSPのコード部分に問題がある可能性があります。具体的には、contentTypeがShift-JISであることや、<html:form>タグの閉じ忘れなどが考えられます。

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

  • ベストアンサー
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.7

> <%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %> JSPはUTF-8で保存されているのよね? で、ブラウザではちゃんとUTF-8で表示できているかしら。 ブラウザで右クリック>エンコードで確認してみて? 多分Shift_JISになってしまっているでしょう。 > <%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %> に変更したあと、一度Tomcatのワークを削除してみて。 具体的には、JSPがコンパイルされてできたjavaファイルとclassファイルの2つね。 その後再表示すると直るかも。

TKO_1988
質問者

補足

ご回答ありがとうございます。 ブラウザで右クリック>エンコードで確認したのですが、UTF-8でした。 また、javaファイルとeclipseのナビゲーターからclassファイルを削除したのですが、変わりませんでした。 報告が遅れてしまっていました。一応お伝えしておきます。他の二つのJSPでは<input type・・・>からのrequest.getParameterは成功しています。

その他の回答 (7)

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.8

ブラウザの表示エンコーディングがUTF-8なのに化けてるってことは JSPがShift_JISで保存されているとか?

  • yuki4499
  • ベストアンサー率62% (10/16)
回答No.6

1.eclipse 3.5を開いてウィンドウより設定を開く 2.サーバーのインストール済みランタイム環境を開く 3.Apache Tomcat v5.5を選択し消去 4.その後追加を押し、Apache の中のApache Tomcat v5.5を選択 5.新規サーバーランタイムのワークベンチデフォルトJREを  jdk1.6.0_13(環境依存)に設定して完了する いつも自分はこうやって直しています。 正直もっとスマートなやり方があると思われますがJavaは 専門分野ではないので不格好な方法で失礼

参考URL:
http://www.searchman.info/java_eclipse/1090.html
  • yuki4499
  • ベストアンサー率62% (10/16)
回答No.5

useBodyEncodingForURI="true" については補足的な説明なのでどうでもいいです。 やってるのは下の回答部分で確認してるので。 問題なのはそれをちゃんと反映させているかどうかです。 初心者がよくやることですが、Tomcatの設定を直してそれで終わりという人が結構多いという点を心配しています。 あなたが直したserver.xmlはTomcatなのかeclipse 3.5のほうなのかが一番の疑問点です。 Tomcatのserver.xmlを直してもeclipse 3.5で開発をしているのならまったく意味がありません。 eclipse 3.5を使用する際にTomcatを読み込んだと思いますが、それをもう一度やり直す必要があります。 それかやったことはないですがC:\eclipse\workspace\サーバー\Tomcat v5.5 サーバー @ localhost-config の中のserver.xmlを直接編集すれば文字化けを防げるかも・・・

TKO_1988
質問者

補足

ご回答ありがとうございます。 「C:\eclipse\workspace\サーバー\Tomcat v5.5 サーバー @ localhost-config の中のserver.xml」を直接編集したのですが結果は同じで 申し訳ありませんが、「eclipse 3.5を使用する際にTomcatを読み込んだと思いますが、それをもう一度やり直す必要があります。」というのがよく分からないので具体的な方法をお教えいただけると、 ありがたいです。 よろしくお願いします。

  • yuki4499
  • ベストアンサー率62% (10/16)
回答No.4

Postで送ればその現象は防げたはず。 Tomcat5の仕様でGETで送った場合の文字列のデコードに必ずISO8859-1が使われる。 サーブレット中でエンコーディングをかけてもデフォルトは無視されるので C:\Apache\Tomcat 5.5\confのserver.xmlの中身の <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --> <Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" の後に useBodyEncodingForURI="true"/> をつけてやれば後はサーブレットのほうでSetCharacterEncoding()でいけたはず。 eclipse使ってるならTomcatの再読み込み忘れないように

TKO_1988
質問者

補足

ご回答ありがとうございます。 useBodyEncodingForURI="true" なのですが、入力していました。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.3

その文字化けは UTF-8のテキストをShift_JISで表示しようとすると出る タイプね。 つまり、サーバからブラウザに転送されているデータは UTF-8になっているってことね。 JSPファイルがUTF-8で保存されているでしょ? それが原因よ。 pageディレクティブにpageEncodingでファイルの保存エンコーディングである UTF-8を指定してあげるといいわ。

TKO_1988
質問者

補足

ご回答ありがとうございます。返答が遅れてすみません。 <%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>を 早速試したのですが、結果は同じでした。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

ぶっちゃけ 「JSP 文字化け」だけでぐぐれば解法は見つかるのよ。 そこに「ISO-8859-1」を入れても変わらないけど。 実際にぐぐって見ればわかるけど 文字化けにはいろいろ種類・パターンがあるのよ。 どんな風に文字化けしているのか私には見えないから 具体的な施策を提示することは無理なのよ。 せめてどんな風に文字化けするのか教えてくれないかしら。 まずはそこからはじめましょう。

TKO_1988
質問者

補足

「赤」の出力が、UTF-8の「襍、」で出力されます。 request.setCharacterEncoding("Shift_JIS"); などを使ったのですが、変換されず「襍、」のままです。 server.xmlの方の<Connecter ~>にも useBodyEncodingForURI="true" を追記したりしましたが、 駄目でした。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

ヒント GETで送られた日本語の文字コードは ISO-8859-1

TKO_1988
質問者

補足

ご回答ありがとうございます。 申し訳ありません。いろいろと試したのですが、JSPがコンパイルできないなどのエラーに引っ掛かり、どうしたらいいのか分からなくなってしまいました。 もうすこしご教授お願いできませんでしょうか?

関連するQ&A