问题描述:
@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数据编码正确即可。 |