【Spring】解決返回json亂碼問題


問題描述:

@RequestMapping(value="/{path}")
@ResponseBody
public /*JSONObject*/String path(@PathVariable("path") String path,HttpServletRequest request,@RequestBody String jsonStr)

請求方法中原本返回JSONObject,前台中,中文正常顯示。

如果返回結果為String 則出現中文亂碼。但是使用.json后綴訪問正常顯示為JSON結構字符串

解決方法:

@RequestMapping(value="/{path}", produces = "application/json; charset=utf-8")
加上produces即可。

 

錯誤解決方法1:修改web.xml

<filter>
<filter-name>encodingFilter</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>encodingFilter</filter-name>
<url-pattern>/此處為URI/*</url-pattern>
</filter-mapping>

<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.json</url-pattern>
</filter-mapping>

<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.json</url-pattern>
</servlet-mapping>

無效果。

錯誤解決方法2:tomcat server.xml中設置URIEncoding

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

無效果。

錯誤解決方法3:設置request和response

//request.setCharacterEncoding("utf-8");
//response.setContentType("application/json;charset=utf-8");
//response.setCharacterEncoding("utf-8");

無效果。

PS:Spring 編碼filter已經處理好編碼,無需手動設置。此處並無jsp頁面,只是純粹的接口,只要保證JSON數據編碼正確即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM