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%BD
にurlencode
でエンコードされます。
ただし、このメソッドは、name
をISO_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>
私はmavenを使用し、maven-compiler-pluginのプロパティでは ' UTF-8 'です。また、私のファイルはすべてUTF-8になっています。 –
omickron
さて、その後、追加しよう ' forceEncoding 真 PARAM値>フィルタ設定 –
へ ' が、私はforceEncodingを必要としない - それは、レスポンスのエンコーディングを設定しますが、質問はご要望です。ソースhttps://github.com/spring-projects/spring-framework/blob/master/spring-web/src/main/java/org/springframework/web/filter/CharacterEncodingFilter.java#L194 – omickron