查询字符串中的字符编码,希伯来语

我正在尝试使用希伯来语中的查询字符串参数发送GET请求。 当控制器获得请求时,参数是乱码。 我添加了“org.springframework.web.filter.CharacterEncodingFilter”,但它没有改变一件事。

请告知如何解决它。

更新:这是请求。

GET /myapp/specialties?query=%D7%92%D7%99%D7%A0%D7%A0%D7%A0%D7%A0 HTTP/1.1 Host: localhost:8080 Connection: keep-alive Accept: * Cache-Control: no-cache User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36 Content-Type: application/json;charsert=utf-8 Accept-Encoding: gzip,deflate,sdch Accept-Language: en-US,en;q=0.8,he;q=0.6 Query String Parametersview sourceview URL encoded query:גיננננ Response Headersview source Content-Type:application/json;charset=UTF-8 Date:Mon, 03 Mar 2014 20:45:17 GMT Server:Apache-Coyote/1.1 Transfer-Encoding:chunked 

web.xml中

   med.rec  contextConfigLocation classpath:spring/application-config.xml   CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter  encoding UTF-8   forceEncoding true    CharacterEncodingFilter /*   org.springframework.web.context.ContextLoaderListener   dispatcherServlet org.springframework.web.servlet.DispatcherServlet  contextConfigLocation /WEB-INF/mvc-config.xml  1   dispatcherServlet /   

-Roy

事实certificate, CharacterEncodingFilter使用的是HttpServletRequest#setCharacterEncoding(String)

覆盖此请求正文中使用的字符编码的名称 。 必须在读取请求参数或使用getReader()读取输入之前调用此方法。 否则,它没有任何效果。

这对你没有好处,因为你没有从正文中获取参数,而是从查询字符串中获取参数。

但是,如果你使用的是Tomcat,那么你很幸运。 Tomcat有一个特殊的Connector属性,当设置它(默认情况下未设置)时,将对查询字符串使用相同的字符编码。

该属性是useBodyEncodingForURI 。 如果打开Tomcat servet.xml文件,你会发现一个像(没有属性)的元素

   

添加属性,它将按预期工作。 在这种情况下,请确保为相应的Connector ,HTTP设置它。

其他Servlet容器可能有一些类似的配置。