アプリ版:「スタンプのみでお礼する」機能のリリースについて

文字化けで困っています。
下記のJSPからrequest.getParameterで他のJSPに取得させようとしているのですが、文字化けが起こってしまいます。どなたか、考えられる原因をご教授お願い致します。(eclipse 3.5)


<%@page contentType="text/html; charset=Shift-JIS"%>
<html:form action="/**/***">
<select name="color_name" >
<option value="赤" selected>赤</option>
<OPTION value="青">青</option>
<OPTION value="黄">黄</option>
<OPTION value="緑">緑</option>
</select></TD>
</html:form>
--------------------------------------------------------

<%@page contentType="text/html; charset=Shift-JIS"%>
<%=request.getParameter("color_name") %>

A 回答 (8件)

> <%@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つね。
その後再表示すると直るかも。

この回答への補足

ご回答ありがとうございます。

ブラウザで右クリック>エンコードで確認したのですが、UTF-8でした。
また、javaファイルとeclipseのナビゲーターからclassファイルを削除したのですが、変わりませんでした。

報告が遅れてしまっていました。一応お伝えしておきます。他の二つのJSPでは<input type・・・>からのrequest.getParameterは成功しています。

補足日時:2010/02/03 11:31
    • good
    • 0

ブラウザの表示エンコーディングがUTF-8なのに化けてるってことは


JSPがShift_JISで保存されているとか?
    • good
    • 0

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
「文字化けで困っています。」の回答画像6
    • good
    • 0

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を直接編集すれば文字化けを防げるかも・・・

この回答への補足

ご回答ありがとうございます。

「C:\eclipse\workspace\サーバー\Tomcat v5.5 サーバー @ localhost-config
の中のserver.xml」を直接編集したのですが結果は同じで

申し訳ありませんが、「eclipse 3.5を使用する際にTomcatを読み込んだと思いますが、それをもう一度やり直す必要があります。」というのがよく分からないので具体的な方法をお教えいただけると、
ありがたいです。

よろしくお願いします。

補足日時:2010/02/03 09:55
    • good
    • 0

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の再読み込み忘れないように

この回答への補足

ご回答ありがとうございます。

useBodyEncodingForURI="true" なのですが、入力していました。

補足日時:2010/02/02 17:43
    • good
    • 0

その文字化けは


UTF-8のテキストをShift_JISで表示しようとすると出る
タイプね。

つまり、サーバからブラウザに転送されているデータは
UTF-8になっているってことね。

JSPファイルがUTF-8で保存されているでしょ?
それが原因よ。

pageディレクティブにpageEncodingでファイルの保存エンコーディングである
UTF-8を指定してあげるといいわ。

この回答への補足

ご回答ありがとうございます。返答が遅れてすみません。

<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>を
早速試したのですが、結果は同じでした。

補足日時:2010/02/02 12:16
    • good
    • 0

ぶっちゃけ


「JSP 文字化け」だけでぐぐれば解法は見つかるのよ。
そこに「ISO-8859-1」を入れても変わらないけど。

実際にぐぐって見ればわかるけど
文字化けにはいろいろ種類・パターンがあるのよ。

どんな風に文字化けしているのか私には見えないから
具体的な施策を提示することは無理なのよ。


せめてどんな風に文字化けするのか教えてくれないかしら。
まずはそこからはじめましょう。

この回答への補足

「赤」の出力が、UTF-8の「襍、」で出力されます。

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

補足日時:2010/02/01 17:44
    • good
    • 0

ヒント



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

この回答への補足

ご回答ありがとうございます。

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

補足日時:2010/02/01 12:25
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!