SpringMvcバックグラウンドでjsonデータを受信する中国語の文字化け問題を解決するいくつかの方法
1、ajaxを使ってフロントページからバックグランドコントローラにデータを転送すると、中国語の文字化けが発生します。
前にインターネットでいろいろな解決案を探しましたが、全部だめです。最後にtomcatサーバーがデータを受け取る問題です。
ソリューション:
方式一:controllerがパラメータを受信する時、パラメータをトランスコードする
tomcatディレクトリのservice.xmlファイルを設定します。
tomcat 7/conf/server.xml
この行のコードにURIEncoding=「UTF-8」の符号化属性を追加します。
文字化けの問題が発生した原因は、デフォルトのtomcat配置により、受信要求はISO-859-1でトランスコードされ、中国語に文字化けの問題が発生しました。正確にutf-8でトランスコードすれば、文字化けの問題を解決できます。
2、一般データ転送、jspページからバックグラウンドcontrollerに伝え、中国語の文字化け問題解決方案
(1)、まずjspページ符号化フォーマットがutf-8かどうかを確認する。
(2)、中国語フィルタの設定
前にインターネットでいろいろな解決案を探しましたが、全部だめです。最後にtomcatサーバーがデータを受け取る問題です。
ソリューション:
方式一:controllerがパラメータを受信する時、パラメータをトランスコードする
@ResponseBody
@RequestMapping(value="/getJsonDataByCityName",produces="application/json")
public String getJsonByName(HttpServletRequest request,HttpServletResponse response,@RequestParam String city_name)throws ServletException,IOException
{
//response.setContentType("text/html;charset=UTF-8");
//request.setCharacterEncoding("UTF-8");// post
System.out.println(request.getCharacterEncoding());
city_name = new String(city_name.getBytes("ISO-8859-1"), "UTF-8");
System.out.println("city_name:"+city_name);
}
方式二:tomcatディレクトリのservice.xmlファイルを設定します。
tomcat 7/conf/server.xml
この行のコードにURIEncoding=「UTF-8」の符号化属性を追加します。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
原因分析:文字化けの問題が発生した原因は、デフォルトのtomcat配置により、受信要求はISO-859-1でトランスコードされ、中国語に文字化けの問題が発生しました。正確にutf-8でトランスコードすれば、文字化けの問題を解決できます。
2、一般データ転送、jspページからバックグラウンドcontrollerに伝え、中国語の文字化け問題解決方案
(1)、まずjspページ符号化フォーマットがutf-8かどうかを確認する。
(2)、中国語フィルタの設定
<!-- -->
<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>
(3)、スプリングMvcプロファイルにJSONデータ変換を設定する
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<!-- Spring MVC , POJO
ISO-88859-1, UTF-8 -->
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes" value="text/html;charset=UTF-8" />
</bean>
<!-- JSON , JSON , -->
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes" value="application/json;charset=UTF-8" />
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。