トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

SpringMVCでGETで日本語のパラメータを送信したらサーバ側で文字化けしたのの対応 のバックアップ差分(No.1)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
*SpringMVCでGETで日本語のパラメータを送信したらサーバ側で文字化けしたのの対応 [#j320aab9]

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


***web.xmlのfilter設定 [#o54971b5]
とりあえず、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のマニュアルです。
-http://tomcat.apache.org/tomcat-7.0-doc/config/http.html#Common_Attributes

従って、以下の設定追加が必要となります。

***server.xmlのConnectorにURIEncodingパラメータを追加 [#ofe33e54]

以下のパラメータをコネクタの属性に追加することで対処出来ます。

 URIEncoding="UTF-8"

なお、Connector設定は、通常、「HTTP:8080」ポートと、「AJP:8009」ポートの2ポートの設定がされているので、必要なConnectorすべての設定する必要があります。