#java #spring #spring-mvc #encoding #freemarker
#java #spring #spring-mvc #кодирование #freemarker
Вопрос:
Я не могу изменить кодировку на UTF-8, даже если я явно укажу это. Страница в браузере всегда создается с кодировкой ISO-8859-1, а символы моего языка отображаются как «???». Если это важно — я использую IntelliJ IDEA.
Это проблема с freemarker, потому что, когда я меняю его на jsp, страницы генерируются с кодировкой UTF-8.
Я попытался изменить кодировку с:
- Проверьте кодировку в IDE
- <#кодировка ftl>
- <#настройка url_escaping_charset=»UTF-8″>
- <#настройка output_encoding=»UTF-8″>
- укажите
produces
параметр в аннотациях @….Mapping - Укажите кодировку в
FreeMarkerConfigurer
- Укажите тип содержимого в
FreeMarkerResolver
- Укажите кодировку в
CharacterEncodingFilter
- Укажите кодировку в реализации
Filter
- Укажите тип содержимого в
FreeMarkerConfigurerFactory
Но ничего из этого не дало мне решения
Комментарии:
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 ни на что не повлияла.