トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

SpringMVCでGETで日本語のパラメータを送信したらサーバ側で文字化けしたのの対応

Last-modified: 2014-02-11 (火) 23:34:18 (1197d)
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すべての設定する必要があります。