Spring Web MVC :: GET方法:: RequestParam编码

时间:2016-09-13 13:03:43

标签: java angularjs spring rest

我有一个REST入口点:

@RequestMapping(value = "user" method = RequestMethod.GET)
public List<User> getUsers( @RequestParam(value = "name") String name )

我使用AngularJS发送/rest/user?name=Иван,请求在urlencode中使用rest/user?name=%D0%98%D0%B2%D0%B0%D0%BD进行编码。

但该方法在name字符集中接收ISO_8859_1,而不是像预期的那样接收UTF-8。 如果我写

new String(request.getName().getBytes( StandardCharsets.ISO_8859_1 ), StandardCharsets.UTF_8)

它变好了。但这不是一个正确的方法:)

我做错了什么以及如何解决?

===

P上。 S.

在我的web.xml中,我为CharacterEncodingFilter编码配置了UTF-8

<filter>
    <filter-name>CharacterEncodingFilter</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>
</filter>

1 个答案:

答案 0 :(得分:-2)

您是否使用gradle构建项目?在构建时尝试标志-Dfile.encoding = utf-8,默认编码是系统一