Не могу изменить кодировку набора символов

В настоящее время у меня есть приложение Angular 4 с бэкэндом Spring Boot, оба обслуживаются на сервере tomcat 9.

Что бы я ни пытался, когда я перехожу к URL-адресу своего приложения, тип содержимого обслуживаемого html-файла кодируется в ISO-8859-1 (я хочу UTF-8).

Я добавил utf-8 во все, что мог, от html-файлов до конфигурации сервера, но это не решает проблему (данные, возвращаемые из бэкэнда, закодированы в utf-8, а не в html-файле).

Вот мой текущий стек:

  • Угловой 4
  • Весенний ботинок
  • Томкэт 9
  • Хром 59/Файрфокс 54

В коте:

<filter>
    <filter-name>setCharacterEncodingFilter</filter-name>
    <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <async-supported>true</async-supported>
</filter>

Добавил URIEncoding="UTF-8" useBodyEncodingForURI="true" во все коннекторы, которые у меня есть.

Весной :

Добавлен тип контента с кодировкой utf-8 в заголовках запросов.

В HTML:

Добавлена ​​мета: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Если я забыл какую-то информацию, не стесняйтесь спрашивать меня.

Спасибо.


person Helongh    schedule 07.08.2017    source источник
comment
Где вы видите кодировку символов html? Это в гугл хром? Если да, то какая версия?   -  person TruckDriver    schedule 07.08.2017
comment
Я вижу это в Chrome 59, а также в Firefox 54. В других браузерах не пробовал.   -  person Helongh    schedule 07.08.2017
comment
это может быть проблема с автоматическим определением кодировки Google Chrome, которое было введено в Chrome 55 bugs.chromium.org/p/chromium/issues/detail?id=597488 Попробуйте wget для своего html из командной строки и посмотрите, какая кодировка загружаемого html. Если это проблема браузера, вы можете вручную изменить кодировку, используя некоторые расширения.   -  person TruckDriver    schedule 07.08.2017


Ответы (1)


На самом деле мне удалось заставить его работать, изменив фильтр по умолчанию с tomcat в web.xml на весенний:

<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>
person Helongh    schedule 07.08.2017