使用springmvc框架開發了這么長時間,之前都是直接返回jsp頁面,亂碼情況都是通過配置和手動編解碼來解決,但是今天突然返回一段單純的字符串時,發現中文亂碼情況解決不了了,下面就給各位分享一下如何解決返回字符串時出現的亂碼情況(無需實驗,直接使用即可)。
之前我們都是通過在springmvc的核心配置文件中配置視圖解析器來返回指定的頁面,將數據通過Model對象渲染頁面,最后響應給用戶,但是這種方式我們是通過在web.xml文件中配置CharacterEncodingFilter就可以解決。
1 <!-- 解決post亂碼 --> 2 <filter> 3 <filter-name>CharacterEncodingFilter</filter-name> 4 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 5 <init-param> 6 <param-name>encoding</param-name> 7 <param-value>UTF-8</param-value> 8 </init-param> 9 </filter> 10 <filter-mapping> 11 <filter-name>CharacterEncodingFilter</filter-name> 12 <url-pattern>/*</url-pattern> 13 </filter-mapping>
但是在某種情況下我們不需要對用戶返回一個頁面,而是單純給調用接口服務的調用者返回一字符串,這時添加@ResponseBody注解這是必然的,但是你響應的數據中包含中文,則會出現亂碼問題,即使你在web.xml文件中配置了解決post請求方式的亂碼過濾器,也於事無補,這時就需要通過倆種方式來解決(當然本人只熟悉倆種,並且已經實踐過了,好使)。
第一種:通過注解的屬性解決。
通過給@RequestMapping中添加produces="text/html;charset=UTF-8"。
第二種:通過在springmvc核心配置文件中配置處理器、映射器解決。
1 <!-- 2、處理器、映射器 --> 2 <mvc:annotation-driven> 3 <mvc:message-converters register-defaults="true"> 4 <bean class="org.springframework.http.converter.StringHttpMessageConverter"> 5 <constructor-arg value="UTF-8" /> 6 </bean> 7 </mvc:message-converters> 8 </mvc:annotation-driven>