我使用REST
实施了一项搜索Spring MVC
服务,该服务在JSON
中返回响应。响应包含包含搜索词的hrefs(self等)。中文搜索词在href中没有正确显示,它显示如下:
%E5%A4%AA%E9%99%BD%E7%B3%BB%E4%B8%AD
我尝试使用URLEndoer.encode(myString, "UTF-8")
,但这不起作用。
修改
我找到了根本原因,这是对New URI(myparams).toAsciiString()
的调用导致了这个问题。
答案 0 :(得分:1)
您需要使用CharacterEncodingFilter
课程。 CharacterEncodingFilter
过滤器需要按以下方式在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>/*</url-pattern>
</filter-mapping>
答案 1 :(得分:0)
响应中设置的content-type
标头是什么?您可以使用浏览器中的开发人员工具查看HTTP响应进行检查。
应该是:application/json; charset=UTF-8
答案 2 :(得分:0)
在发送响应时,您可以在搜索方法中设置字符编码
这将确保返回的响应采用UTF-8,并且将显示汉字
@RequestMapping(value = "", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
ResponseEntity<String> search(HttpServletRequest request, HttpServletResponse response);
编辑:我尝试使用web.xml中的过滤器,但是没有用。