Spring Boot выдает код ISO вместо UTF-8 - PullRequest
0 голосов
/ 04 марта 2019

Spring Boot декодирует строку из аннотации @RequestHeader с ISO-8859-1 вместо UTF-8.

реферата application.properties

spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.http.encoding.force-request=true
spring.http.encoding.force-response=true
spring.messages.encoding=UTF-8
spring.banner.charset=UTF-8
spring.mandatory-file-encoding=UTF-8
server.tomcat.uri-encoding=UTF-8
spring.freemarker.charset=UTF-8

Контроллер

@Controller
@RequestMapping(value = "/mapping/", produces = "text/plain;charset=UTF-8")
public class MyController {}

команда curl

curl 'https://example.com/mymapping/' -H 'Connection: keep-alive' -H 'Cache-Control: max-age=0' -H 'Upgrade-Insecure-Requests: 1' -H 'User-Agent: Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' -H 'Referer: https://example.com/mymapping/' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: en-US,en;q=0.9,de;q=0.8' -H 'Cookie: cookiesession1=<*>; mellon-cookie=<*>; JSESSIONID=<*>' --compressed

Некоторые специальные символы по-прежнему неправильно декодируются, например, ü будет ü впоследствии.

При следующем обходе я получаю правильныйstring.

private static final Charset UTF_8 = Charset.forName("UTF-8");
private static final Charset ISO = Charset.forName("ISO-8859-1");

String textnew = new String(textold.getBytes(ISO), UTF_8);

Я хочу объявить, что мое приложение декодирует все данные в UTF-8, а не ISO или что-то подобное.Есть предложения?

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Где-то я читал, что Java ожидает, что файлы * .properties кодируются в ISO-8859-1, и поэтому Spring обрабатывает application.properties так, как если бы он находился в ISO-8859-1. Попробуйте использовать YAML вместо файлов свойств.

0 голосов
/ 04 марта 2019

Можете ли вы проверить заголовки ответа, какое значение для Content-Type :?например: application / json; charset = UTF-8

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...