Spring Boot, FreeMarker и кодировка Windows-1252
Приложение на Spring Boot, MVC и FreeMarker. Везде, где только можно, выставил кодировку UTF-8 - и в заголовке ftl, и в pom.xml, и сделал бин viewResolver - результат не меняется, получаю "?" вместо русских букв. С БД все нормально - оттуда получаю русские символы. Вот несколько частей моего конфига:
<#ftl encoding='UTF-8'>
<#macro page>
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" charset="UTF-8"/>
Здесь настройка maven:
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
<jvmArguments>-Dfile.encoding=UTF8</jvmArguments>
</configuration>
</plugin>
</plugins>
</build>
Здесь viewResolver и его инжект:
@Bean
public FreeMarkerViewResolver viewResolver() {
FreeMarkerViewResolver viewResolver = new FreeMarkerViewResolver();
viewResolver.setContentType("text/html;charset=UTF-8");
viewResolver.setPrefix("templates/");
viewResolver.setSuffix(".ftl");
return viewResolver;
}
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.freeMarker();
registry.viewResolver(viewResolver);
}
Результат один - я получаю страницу в кодировке Windows-1252. Операционная система - Mac OS.
В чем еще может быть проблема?
Ответы (2 шт):
Автор решения: Podushkoved
→ Ссылка
Можно еще добавить кодировку для MessageConverters в настройках WebMvcConfigurer:
@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.forEach(converter -> {
if (converter instanceof AbstractHttpMessageConverter) {
((AbstractHttpMessageConverter) converter).setDefaultCharset(StandardCharsets.UTF_8);
if (converter instanceof StringHttpMessageConverter) {
((StringHttpMessageConverter) converter).setWriteAcceptCharset(false);
}
} else if (converter instanceof FormHttpMessageConverter) {
((FormHttpMessageConverter) converter).setCharset(StandardCharsets.UTF_8);
((FormHttpMessageConverter) converter).setMultipartCharset(StandardCharsets.UTF_8);
}
});
}
}
Автор решения: Podushkoved
→ Ссылка
В настройках maven нужно добавить кодировку и в плагинах к нему:
<properties>
<project.java.version>1.8</project.java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>${project.java.version}</source>
<target>${project.java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>
</build>