- - PR -
Tomcat6.0.13で文字化け
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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 で、クライアントから送信されたデータを正しく得る方法はありますでしょうか? |
|
投稿日時: 2007-08-09 18:38
自己返信ですみません。
解決しました。 Tomcat 6.0.13 の環境のほうにだけ、RequestDumperValve を設定していたのが問題でした。 この設定を外したところ、正常に動くようになりました。 ふつうに考えればわかることですが、RequestDumperValve を設定していると、Action.process() で request.setCharacterEncoding をしてももう手遅れで、効かなくなるんですね。 お騒がせいたしました。 |
1