Spring Boot - UTF-8 在 messages.properties 中不起作用
SpringBoot - UTF-8 Doesnt work in 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>
演示 class
@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;
}
}
如果您需要有关我的配置的更多信息,我可以对其进行编辑。
谢谢。
要读取 UTF-8
编码的任何文件,必须在 UTF-8
之前创建它。
使用一些支持编码切换的编辑器。或者使用属性文件的编码选项从 IDE 创建该文件。例如。 IDE答:http://blog.jetbrains.com/idea/2013/03/use-the-utf-8-luke-file-encodings-in-intellij-idea/
就我而言,我忘记了 messageSource.setDefaultEncoding("UTF-8")
,请参阅 here。
希望这对其他人有帮助。各种 code
解决方案在我的案例中不起作用,但编辑器设置起作用了。
如果您使用的是 intellij,请转到 file encoding
并将全局和项目编码设置为 UTF-8,default encoding for properties files
也是如此,并且 - 非常重要 - 检查 Transaparent native-to-ascii conversion
。
如果您使用合适的文本编辑器打开该文件,您会注意到某些字符是使用 UTF-8 版本编写的,例如
é ->
\u00E9
在我的例子中,更改没有触发 GIT 的更改,因此我必须对文件进行 "fake" 修改才能进行提交和推送。
至少在我的情况下,问题出在 messages.properties 文件中。因为 Eclipse(在我的例子中是 STS)默认使用 ISO-8859-1 编码。
因此,只需将其更改为 UTF-8 即可。但是要小心,因为在转换过程中(我是添加内容后做的)一些字符可以用菱形等符号替换
我更喜欢
要读取 UTF-8 编码的任何文件,必须先以 UTF-8 编码创建它。
使用一些支持编码切换的编辑器。或者使用属性文件的编码选项从 IDE 创建该文件。例如。 IDE答:http://blog.jetbrains.com/idea/2013/03/use-the-utf-8-luke-file-encodings-in-intellij-idea/
¿有什么问题?
我无法以 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>
演示 class
@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;
}
}
如果您需要有关我的配置的更多信息,我可以对其进行编辑。 谢谢。
要读取 UTF-8
编码的任何文件,必须在 UTF-8
之前创建它。
使用一些支持编码切换的编辑器。或者使用属性文件的编码选项从 IDE 创建该文件。例如。 IDE答:http://blog.jetbrains.com/idea/2013/03/use-the-utf-8-luke-file-encodings-in-intellij-idea/
就我而言,我忘记了 messageSource.setDefaultEncoding("UTF-8")
,请参阅 here。
希望这对其他人有帮助。各种 code
解决方案在我的案例中不起作用,但编辑器设置起作用了。
如果您使用的是 intellij,请转到 file encoding
并将全局和项目编码设置为 UTF-8,default encoding for properties files
也是如此,并且 - 非常重要 - 检查 Transaparent native-to-ascii conversion
。
如果您使用合适的文本编辑器打开该文件,您会注意到某些字符是使用 UTF-8 版本编写的,例如
é
->
\u00E9
在我的例子中,更改没有触发 GIT 的更改,因此我必须对文件进行 "fake" 修改才能进行提交和推送。
至少在我的情况下,问题出在 messages.properties 文件中。因为 Eclipse(在我的例子中是 STS)默认使用 ISO-8859-1 编码。
因此,只需将其更改为 UTF-8 即可。但是要小心,因为在转换过程中(我是添加内容后做的)一些字符可以用菱形等符号替换
我更喜欢 要读取 UTF-8 编码的任何文件,必须先以 UTF-8 编码创建它。
使用一些支持编码切换的编辑器。或者使用属性文件的编码选项从 IDE 创建该文件。例如。 IDE答:http://blog.jetbrains.com/idea/2013/03/use-the-utf-8-luke-file-encodings-in-intellij-idea/