問題描述:
@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數據編碼正確即可。