我使用Spring MVC的由@PathVariable如下得到参数:的Spring MVC编码非英语参数
@GetMapping("https://stackoverflow.com/users/{username}")
public Boolean getUser(@PathVariable("username") String username)
{
// do some works
}
当我输入paramater是无English(如阿拉伯语),我无法得到正确的值参数和用户名参数包含无效的ASCII码。另外,我确信客户端以UTF-8格式发送请求URL。
我测试了spring的字符编码过滤器来解决它,但它不起作用。
<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>
测试我有@RequestsParam和HttpServletRequest的代码,但所有的人都返回无效字符,另外,我用URLEncoder.encode和URLDecoder.decode但可以解决问题。
显示您的DispatcherServler映射? – shazin