SpringBoot-UTF-8在messages.properties中不起作用 有什么问题吗?

SpringBoot-UTF-8在messages.properties中不起作用 有什么问题吗?,spring,utf-8,thymeleaf,Spring,Utf 8,Thymeleaf,我无法在UTF-8中显示我在messages.properties中获得的消息 一个例子 <h1 id="logo">Electrónico</h1> pom.xml <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <start-class>demo.Demo</start-class>

我无法在UTF-8中显示我在messages.properties中获得的消息

一个例子

<h1 id="logo">Electrónico</h1>
pom.xml

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <start-class>demo.Demo</start-class>
    <java.version>1.7</java.version>
</properties>
servletializer.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;
    }
}
如果您需要有关我的配置的更多信息,我可以编辑它。
谢谢。

要读取
UTF-8
编码中的任何文件,必须先在
UTF-8
中创建该文件


使用一些支持编码切换的编辑器。或者使用属性文件的编码选项从IDE创建该文件。例如,想法:

在我的情况下,我忘记了
消息源。setDefaultEncoding(“UTF-8”)
,请参阅。

希望这可以帮助其他人。各种
code
解决方案在我的案例中不起作用,但编辑器设置起作用

如果您正在使用intellij,请转到
文件编码
并将全局和项目编码设置为UTF-8,属性文件的
默认编码也一样
,并且-非常重要-检查
转换为ascii转换

如果你用一个合适的文本编辑器打开文件,你会注意到有些字符是用UTF-8版本写的,比如

é
->
\u00E9


在我的例子中,这个改变并没有触发GIT的改变,所以我不得不做一个“假的”修改文件以进行提交和推送。

您可以包含servlet配置吗?您的
消息。属性
文件也必须在
UTF-8
中创建。@Artem Bilan我怎么做?使用一些支持编码切换的编辑器。或者从IDE中使用
属性的编码选项创建该文件。例如:IDEA:@ArtemBilan谢谢你的帮助,我有同样的问题message.properties,但我使用了IDE Eclipse。因此,我在文件中单击鼠标右键,然后转到属性。当打开窗口时,我看到了文本文件编码,我更改为UTF-8并开始工作!!顺便说一下,它不需要是可重新加载的ResourceBundleMessageSource。setDefaultEncoding在AbstractResourceBasedMessageSource中定义,因此也由ResourceBundleMessageSource继承。如果使用标准的自动配置MessageSource,Spring Boot中的默认编码已经是UTF-8。如果您定义了自己的MessageSource bean,则只需设置此选项,这将阻止自动配置。使用您的解决方案,我的utf-8字符显示正确,但当我提交并推送git时,它会损坏(如您的示例)。我如何修复它?如果我正确地检查了utf-8字符显示的“Transapart native to ascii conversion”验证消息,但在推上git后,它们损坏了,其他用户无法工作。太棒了。这确实帮助我解决了Spring MVC项目中messages.properties文件的问题,该项目使用IntelliJ IDEA上的UTF-8数据。非常感谢你!注意:
é
具有Unicode码点
U+00E9
,并且可以在消息属性中表示为
\u00E9
。在UTF-16中它被编码为
0x00E9
,但在UTF-8中它是
0xC3A9
!只是添加更多。。。从linux,“file file.properties”将返回ASCII或ISO-8559(如果错误),您可以使用“iconv-f ISO-8859-1-t UTF-8 file.properties-o newfile”进行转换。出于某些原因,IDEA阻止更改属性文件的编码。。。
<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);
    }
}
@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;
    }
}