場景:
在實際運用場景中,當前台發起請求后,我們需要從后台返回數據給前台,這時,如果返回的數據中包含中文,則經常會出現在后台查詢出來都是好好,但是傳輸回去就莫名的亂碼了,而且,我們明明已經在 web.xml 中進行編碼過濾了,但還是亂碼,讓人很頭疼。
解決辦法:
第一種:這種方法,估計很多人都知道,那就在 controller 中的每個方法的 @RequestMappering 注解中進行編碼設置,如下所示:
@RequestMapping(value = "/queryUserById",produces = "text/plain;charset=utf-8")
這種方法可以解決返回亂碼問題,但是存在一個問題就是:需要在每一個的方法中都要寫上 produces = "text/plain;charset=utf-8"
這句設置,這樣無形中,讓我們的代碼看起來,有那么一些不美觀,作為一個慵懶的程序猿,也不會允許我們一直在重復做寫這代碼,
所以有了第二種方法。
第二種:與第一種方法相比,這種方法只需要在 spring-mvc.xml 配置文件中配置一次就好
<!--自定義消息轉換器的編碼,解決后台傳輸json回前台時,中文亂碼問題-->
<mvc:annotation-driven >
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter" >
<property name = "supportedMediaTypes">
<list>
<value>application/json;charset=utf-8</value>
<value>text/html;charset=utf-8</value>
<!-- application 可以在任意 form 表單里面 enctype 屬性默認找到 -->
<value>application/x-www-form-urlencoded</value>
</list>
</property>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" ></bean>
</mvc:message-converters>
</mvc:annotation-driven>
