@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

Tomcat6.0.13で文字化け

1
投稿者投稿内容
有閑NEET
会議室デビュー日: 2007/08/09
投稿数: 5
投稿日時: 2007-08-09 16:56
JDK 1.6u2 + Tomcat 6.0.x + Struts 1.3.8 の環境で開発をしています。
すべてのJSPをUTF-8で書いています。mytest という名称の日本語の内容のパラメータを(POSTで)送った際に、
Tomcat 6.0.10 では、以下のソースコードで7行目のところで日本語の文字列が取れていました。

1:public class MyActionServlet extends ActionServlet {
2:
3: protected void process(HttpServletRequest request, HttpServletResponse response)
4: throws IOException, ServletException {
5:
6: request.setCharacterEncoding("UTF-8");
7: System.out.println(request.getParameter("mytest"));
8: super.process(request, response);
9: }
10:}

実行結果『あいう』

これが、Tomcat のバージョンを 6.0.13 にしたところ、実行結果が
『?????????』になってしまいました。

7行目を、以下に差換えたところ、一応この場では正しい日本語の文字列『あいう』が取れるようになりました。

System.out.println(new String(request.getParameter("mytest").getBytes("8859_1"),"UTF-8"));

ただ、このままでは ActionForm の取り扱いがうまくいかないため、困っています。
request.setCharacterEncoding(string) が効いていないように思えます。
6.0.13 で、クライアントから送信されたデータを正しく得る方法はありますでしょうか?
有閑NEET
会議室デビュー日: 2007/08/09
投稿数: 5
投稿日時: 2007-08-09 18:38
自己返信ですみません。
解決しました。

Tomcat 6.0.13 の環境のほうにだけ、RequestDumperValve を設定していたのが問題でした。
この設定を外したところ、正常に動くようになりました。

ふつうに考えればわかることですが、RequestDumperValve を設定していると、Action.process() で request.setCharacterEncoding をしてももう手遅れで、効かなくなるんですね。
お騒がせいたしました。
1

スキルアップ/キャリアアップ(JOB@IT)