解決SpringMvc後臺接收json數據中文亂碼問題

困擾了很久終於解決了,特地分享出來^_^html

一、使用ajax從前臺頁面傳輸數據到後臺controller控制器的時候,出現中文亂碼(問號???)。web

以前在網上找了各類解決方案,都行不通,最後發現是tomcat服務器接收數據的問題ajax

解決方案:spring

方式一:在controller接收參數時,對參數進行轉碼,紅色部分json

@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

配置tomcat目錄下的service.xml文件服務器

tomcat7/conf/server.xmlmvc

給該行代碼加上 URIEncoding="UTF-8" 的編碼屬性app

<Connector port="8080" protocol="HTTP/1.1"
 
               connectionTimeout="20000"
 
               redirectPort="8443" URIEncoding="UTF-8" />

 

緣由分析:jsp

其實亂碼問題出現的緣由,就是因爲默認的tomcat配置,接收請求是以ISO-8859-1來轉碼,致使中文出現了亂碼問題,只要能正確的以utf-8來轉碼,則能夠解決亂碼問題。

二、普通數據傳輸,從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)、springMvc配置文件中設置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>
相關文章
相關標籤/搜索