我使用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