Подтвердить что ты не робот

SpringBoot - UTF-8 Не работает в messages.properties

¿Какая проблема?

Я не могу отображать в UTF-8 сообщения, которые я получил в messages.properties.

Пример

<h1 id="logo">Electrónico</h1>

это работает нормально, но когда я пытаюсь использовать свой источник сообщений, как этот

<h1 id="logo" th:text="#{titulo.electronico}">Electrónico</h1>

Я получаю "Electr nico" вместо Electrónico

Это моя конфигурация

application.properties

spring.messages.encoding=UTF-8
server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8

pom.xml

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <start-class>demo.Demo</start-class>
    <java.version>1.7</java.version>
</properties>

Демо-класс

@SpringBootApplication
public class Demo {

    public static void main(String[] args) {
        SpringApplication.run(Demo.class, args);
    }
}

ServletInitializer.class

@Configuration
public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Demo.class);
    }

    @Bean
    public ServletRegistrationBean h2servletRegistration() {
        ServletRegistrationBean registration = new ServletRegistrationBean(new WebServlet());
        registration.addUrlMappings("/console/*");
        return registration;
    }

    @Bean
    @Order(Ordered.HIGHEST_PRECEDENCE)
    CharacterEncodingFilter characterEncodingFilter() {
      CharacterEncodingFilter filter = new CharacterEncodingFilter();
      filter.setEncoding("UTF-8");
      filter.setForceEncoding(true);
      return filter;
    }
}

Если вам нужна дополнительная информация о моей конфигурации, я могу ее отредактировать. Спасибо.

4b9b3361

Ответ 1

Чтобы прочитать любой файл в кодировке UTF-8, он должен быть создан в UTF-8 раньше.

Используйте некоторый редактор, который поддерживает переключение кодировки. Или создайте этот файл из IDE с опцией кодирования для файлов свойств. Например. IDEA: http://blog.jetbrains.com/idea/2013/03/use-the-utf-8-luke-file-encodings-in-intellij-idea/

Ответ 2

В моем случае я забыл messageSource.setDefaultEncoding("UTF-8"), смотрите здесь.

Ответ 3

Надеюсь, это может помочь другим. Различные решения code не работали в моем случае, но настройки редактора работали.

Если вы используете intellij, перейдите к file encoding и установите глобальную кодировку и кодировку проекта в UTF-8, то же самое относится и к default encoding for properties files и -very important- проверьте Transaparent native-to-ascii conversion.

Intellij File Encoding

Если вы откроете файл в приличном текстовом редакторе, вы заметите, что некоторые символы написаны с использованием их версии UTF-8, такой как

é ->\u00E9

В моем случае изменение не вызвало изменения для GIT, поэтому мне пришлось сделать "поддельные" изменения в файле, чтобы сделать коммит и нажать.