SpringMVCでGETで日本語のパラメータを送信したらサーバ側で文字化けしたのの対応
Last-modified: 2014-02-11 (火) 23:34:18 (3873d)
Top / SpringMVCでGETで日本語のパラメータを送信したらサーバ側で文字化けしたのの対応
SpringMVCでGETで日本語のパラメータを送信したらサーバ側で文字化けしたのの対応 †
SpringMVCでGETで日本語のパラメータを送信したらサーバ側で文字化けしたのの対応です。
web.xmlのfilter設定 †
とりあえず、SpringMVC導入したら、プロジェクトのweb.xmlに以下のfilter設定を追加します。
<!-- マルチバイト対応:始まり --> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- マルチバイト対応:終わり -->
このfilter設定は、filterの設定の一番最初に入れるのがよいです。
しかし、これだけではGETで日本語パラメータを送った場合に文字化けします。
原因は、URIEncodeがデフォルトだと「ISO-8859-1」であり、URIエンコードされているパラメータはデフォルトで「ISO-8859-1」にデコードされてしまうからです。
※参考:tomcat7のマニュアルです。
従って、以下の設定追加が必要となります。
server.xmlのConnectorにURIEncodingパラメータを追加 †
以下のパラメータをコネクタの属性に追加することで対処出来ます。
URIEncoding="UTF-8"
なお、Connector設定は、通常、「HTTP:8080」ポートと、「AJP:8009」ポートの2ポートの設定がされているので、必要なConnectorすべての設定する必要があります。