2016-09-13 15 views
0

をGET私は、RESTのエントリポイントを持っている:春のWeb MVC ::メソッド:: RequestParamエンコーディング

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

私はAngularJSを使ってそこ/rest/user?name=Иванを送っていて、要求がrest/user?name=%D0%98%D0%B2%D0%B0%D0%BDurlencodeでエンコードされます。

ただし、このメソッドは、nameISO_8859_1の文字セットで受け取りますが、期待どおりのUTF-8ではありません。 書き込むと

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

となります。しかし、これは正しい方法ではありません:)

私は間違って何を修正していますか?私のweb.xmlに

===

P. S.

私はあなたのGradleでプロジェクトをビルドください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> 

答えて

-2

のための立体配置のCharacterEncodingFilterを持っていますか?ビルド時にフラグ-Dfile.encoding = utf-8を試してください。デフォルトのエンコーディングはシステム1です。

+0

私はmavenを使用し、maven-compiler-pluginのプロパティでは ' UTF-8 'です。また、私のファイルはすべてUTF-8になっています。 – omickron

+0

さて、その後、追加しよう ' ​​forceEncoding フィルタ設定 –

+0

へ ' が、私はforceEncodingを必要としない - それは、レスポンスのエンコーディングを設定しますが、質問はご要望です。ソースhttps://github.com/spring-projects/spring-framework/blob/master/spring-web/src/main/java/org/springframework/web/filter/CharacterEncodingFilter.java#L194 – omickron