Как исправить кодировку UTF-8 для приложения Spring Boot? - PullRequest
0 голосов
/ 17 апреля 2020

Вот несколько конфигов моего приложения Spring Boot. Я использую FreeMarker в качестве распознавателя MVC. Это maven config:

<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>

Это мой класс конфигурации:

@Configuration
@EnableWebMvc
@RequiredArgsConstructor
public class ApplicationWebMvcConfig extends WebMvcConfigurerAdapter {

    private final FreeMarkerViewResolver freemarkerViewResolver;

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/templates/").addResourceLocations("/templates/");
    }

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.freeMarker();
        registry.viewResolver(freemarkerViewResolver);
    }

    @Bean
    public FreeMarkerViewResolver freemarkerViewResolver() {
        FreeMarkerViewResolver resolver = new FreeMarkerViewResolver();
        resolver.setContentType("text/html;charset=utf-8");
        resolver.setPrefix("templates/");
        resolver.setSuffix(".ftl.html");
        return resolver;
    }

    @Bean
    public CharacterEncodingFilter characterEncodingFilter() {
        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
        characterEncodingFilter.setForceEncoding(true);
        characterEncodingFilter.setEncoding("UTF-8");
        characterEncodingFilter.setForceRequestEncoding(true);
        characterEncodingFilter.setForceRequestEncoding(true);
        return characterEncodingFilter;
    }
}

Это часть моего application.properties файла

# FRONTEND
spring.freemarker.enabled=true
spring.freemarker.template-loader-path=classpath:/templates/
spring.freemarker.expose-request-attributes=true
spring.freemarker.content-type=text/html
spring.freemarker.charset=UTF-8

Я также добавил эти строки в мои .ftl файлы:

<#ftl encoding='UTF-8'>
<head>
        <meta http-equiv="Content-Type" content="text/html" charset="UTF-8"/>
        ...
</head>

Но я все еще получаю кодировку "Windows -1252", поэтому я не вижу русских букв на своих страницах. Как это исправить?

...