Не удается изменить кодировку шаблона freemarker на UTF-8 в spring framework

#java #spring #spring-mvc #encoding #freemarker

#java #spring #spring-mvc #кодирование #freemarker

Вопрос:

Я не могу изменить кодировку на UTF-8, даже если я явно укажу это. Страница в браузере всегда создается с кодировкой ISO-8859-1, а символы моего языка отображаются как «???». Если это важно — я использую IntelliJ IDEA.

Это проблема с freemarker, потому что, когда я меняю его на jsp, страницы генерируются с кодировкой UTF-8.

Я попытался изменить кодировку с:

  1. Проверьте кодировку в IDE
  2. <#кодировка ftl>
  3. <#настройка url_escaping_charset=»UTF-8″>
  4. <#настройка output_encoding=»UTF-8″>
  5. укажите produces параметр в аннотациях @….Mapping
  6. Укажите кодировку в FreeMarkerConfigurer
  7. Укажите тип содержимого в FreeMarkerResolver
  8. Укажите кодировку в CharacterEncodingFilter
  9. Укажите кодировку в реализации Filter
  10. Укажите тип содержимого в FreeMarkerConfigurerFactory

Но ничего из этого не дало мне решения

Результат в браузере

Шаблон Freemarker

Проект на GitHub

Комментарии:

1. Эта проблема, безусловно, выходит за рамки FreeMarker. FreeMarker просто записывает свои выходные данные в java.io.Writer , и это всегда UTF-16. Это платформа для встраивания / приложение, которое обеспечивает это Writer . Поскольку в вашем случае это будет HTTP-ответ, в какой-то более поздний момент реализация сервлета выполнит кодировку, безусловно, с кодировкой, установленной в качестве кодировки HttpServletResponse . FreeMarker этого не устанавливает, поскольку это не зависит от сервлетов. Таким образом, это общий сервлет и / или веб-настройка Spring, а не FreeMarker.

Ответ №1:

Я нашел решение — когда мы внедряем WebMvcConfigurer и используем registry.freemarker Spring, настройка самого freemarker и us beans FreemarkerViewResolver amp; Configurer ни на что не повлияла.