[JSP] tomcatの日本語を含んだクエリが文字化けする場合の解消法

tomcat文字化け
  • URLをコピーしました!
<form method="GET" action="test.jsp">
	名 前:<input type="text" name="nam" />
</form>

で日本語を取得しようとした際に、インプットに入力された日本語が文字化けしました。
JSPの文字コード環境は 「UTF-8」 です。
クエリの取得には<% request.setCharacterEncoding("UTF-8"); %>と「UTF-8」を指定しています。

tomcatはクエリ情報の解析で request.setCharacterEncoding で指定された文字コードは適用しない仕様になっているそうです。
なのでクエリは ISO-8859-1(Latin-1) の文字コードで処理されるため文字化けが発生。

tomcat4.x以前の場合はこのような文字化けは発生しないようです。tomcat5以降から導入された仕様だそう。

目次

tomcatのクエリ情報の文字化けは server.xml を修正

server.xmlの場所:「tomcatディレクトリ/conf/server.xml」

特に何もいじっていなければ72行目付近に以下の記述があると思います。

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

これを以下のように変更。最後に一文増えています。

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" useBodyEncodingForURI="true" />

記述後はtomcatを再起動させてください。
これでクエリから取得した文字が「UTF-8」で取得され文字化けが解消されました。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメント一覧 (2件)

コメントする

目次