- ベストアンサー
Tomcat6 IE系のみ文字化け
Tomcat6 IE系のみ文字化け 環境: Apache Tomcat 6.0.20 JDK 6 Update 18 Struts 2.0.14 文字コード:UTF-8 ある特定文字をGETパラメータで取得すると文字化けします。 例えば、「自分」、「僕」などです。 また、「ああああ」はOKなのに、「あああ」とすれば文字化けします。 それも、Internet Explorer系のみで、FireFox系は文字化けしません。 server.xmlのConnectorタグには、「useBodyEncodingForURI="true"」が指定されています。 現状下記の通りです。 --- <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" useBodyEncodingForURI="true"/> --- 原因がいまいちわかりません。 お助けいただけないでしょうか。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
念のため確認しますが、 http://your.domain:8080/yourContextRoot/yourAction.action といった形式のURLでアクセスしていますか? (Apache等を経由せずに、ポート8080に直接リクエストしていますか?) 送信フォームをIEで表示した際、 ページ(P)→エンコード(G)で、Unicode(UTF-8)が選択されていますか? GETで送信した場合、パラメータがURLに埋め込まれますよね。 「自分」と入力して送信した場合、 パラメータ名=%e8%87%aa%e5%88%86 になりますか?
その他の回答 (5)
- askaaska
- ベストアンサー率35% (1455/4149)
JSPもUTF-8で保存されているのね。 開発ツールは関係ないと思うけど もしその気になるなら コンパイル・Tomcatの起動を 開発ツールからではなく 直接やってみるといいかも。 コンパイル時に変なオプションが入っていると困るしね。 IEでのみ発生するというのが解せないわね。 今のところ新しい思い付きがないわ。 ごめんなさい。
お礼
エンコーディングをして回避しようと思います。 お手数をおかけしました。 ありがとうございました。
- askaaska
- ベストアンサー率35% (1455/4149)
JSPのディレクティブとHTMLのmetaタグを 書いてもらってもいいかしら?
補足
---JSPのディレクティブ--- <%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> ---HTMLのmetaタグ--- <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> </head> 特に、おかしい所はないと思うのですが・・・。 Tomcat、Java、Struts2のバージョンもいくつか試してもダメでした。 ちなみに、AmaterasIDE 2.0.6(Eclipse)で開発していますが、 何か関係ありますでしょうか。
- askaaska
- ベストアンサー率35% (1455/4149)
1) その「自分」「僕」「あああ」をjspからSystem.out.printlnとかでログに出力すると ちゃんと「自分」「僕」「あああ」になっている? 2) Internet Explorer系 と言っているInternet Explorerのバージョンは6? 8とかで確認することは無理? 3) ・IEの履歴 ・IEの一時ファイル ・フォントキャッシュ をクリアしてみて。 多分効果ないと思うけど。 4) 文字化けして表示されたInternetExplorerの画面 そのソースをUTF-8に対応したエディタで表示してみると 文字化け箇所はやっぱり文字化けしている?
補足
1) Struts2のsetter/getterでブレークポイントを置いて、 System.out.printlnでログを出力していますが、この時点で文字化けしています。 2) Internet Explorer6,8で文字化けの現象を確認しています。 (IE7は未確認ですが、6,8と言う事であれば恐らく7も) 3) クリアしてみましたが、変化なし・・・。 4) はい、文字化けします。 というよりは、「???」になっている状態です。
- askaaska
- ベストアンサー率35% (1455/4149)
その文字化けを確認しているパソコンは WindowsXPsp2だったりする?
補足
いえ、WindowsXP SP3です。 うまく、エンコーディングされていないのは確かなのですが、 原因がつかめません・・・。 お手数おかけします。
- askaaska
- ベストアンサー率35% (1455/4149)
その文字化けするものを new String(mojibakesuru.getBytes("iso-8859-1"), "UTF-8"); してみたらどうなる?
補足
回答ありがとうございます。 試してみた所、未だ、文字化けしています・・・。
お礼
Apache等を経由せずに、ポート8080に直接リクエストしています。 ページ(P)→エンコード(G)で、Unicode(UTF-8)が選択されています。 「パラメータ名=%e8%87%aa%e5%88%86」になっていませんでした。 「パラメータ名=自分」と言った形です。 これが原因なのでしょうか。 とりあえず、エンコーディングをして回避しようと思います。 ありがとうございました。