SpringBoot-UTF-8 не работает в сообщениях.свойства

какие проблемы?

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

пример

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

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

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

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

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

приложение.свойства

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

пом.в 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.класс!--8-->

@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;
    }
}

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

3 ответов


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

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


в моем случае я забыл messageSource.setDefaultEncoding("UTF-8") см. http://forum.spring.io/forum/spring-projects/web/42668-solution-for-utf-8-encoding-problem-inside-property-files


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

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

Intellij File Encoding

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

é -> \u00E9

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