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;
}
}
Если вам нужна дополнительная информация о моей конфигурации, я могу ее отредактировать.
Спасибо.
Ответы
Ответ 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, поэтому мне пришлось сделать "поддельные" изменения в файле, чтобы сделать коммит и нажать.