我有一个SpringBoot应用程序。
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
...
<li><label th:text="#{view.age}">
</label><span>25</span></li>
âge:
...
在属性文件上:
view.age=âge:
但在浏览器上,我看到:
âge:25
âge:
在配置文件中:
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver slr = new SessionLocaleResolver();
slr.setDefaultLocale(Locale.US);
return slr;
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
lci.setParamName("lang");
return lci;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
关于申请。特性:
spring.messages.encoding=UTF-8
spring.thymeleaf.encoding=UTF-8
IntelliJ IDEA也被设置为UTF-8
和
@Override
protected void configure(HttpSecurity http) throws Exception {
CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter();
encodingFilter.setEncoding("UTF-8");
encodingFilter.setForceEncoding(true);
http.addFilterBefore(encodingFilter, CsrfFilter.class);
..
}
我还试着把放到视图中。年龄=
模板编码将通过配置应用程序工作。属性文件-
spring。百里香。编码=UTF-8
请尝试在应用程序中设置以下内容。特性:
spring.messages.encoding=UTF-8
请让我知道这是否有用。
顺便说一句:关于类似的主题,还有一个已经有几年历史的线程,SpringBoot-UTF-8在消息中不起作用。财产。
我想你几乎可以。。。只有几个额外的想法。
首先,请注意,只有在配置中没有定义自己的MessageSource
并且Spring Boot可以应用默认的消息源自动配置时,spring.messages.encoding
属性才会起作用。
如果您定义了MessageSource
If,则应具有适当的编码(默认情况下为iso-8859-1
):
@Bean
public ResourceBundleMessageSource messageSource() {
ResourceBundleMessageSource messageSource =
new ResourceBundleMessageSource();
messageSource.setBasename("messages"); // Please, set the right value
messageSource.setDefaultEncoding("UTF-8"); // Set the UTF-8 encoding
return messageSource;
}
您可以从不同的角度来看待它:如果您还没有这样做,那么在您的配置中包括一个自定义的MessageSource
,就像上面描述的那样,也可能是问题的解决方案。
此外,请确保属性文件采用所需的编码:如果使用特定编码打开文件,Intellij可能会保留该编码。尝试使用所需编码重新加载文件,UTF-8
,如图所示。请注意,在许多情况下,此过程可能具有破坏性,它将更改属性文件的内容,并且可能需要编辑某些字符。当然,您可以使用正确的编码从头开始重新创建属性文件。
虽然我认为问题与属性文件的编码有关,但您也可以尝试设置为模板配置的thymeleafviewsolver
的字符编码,并指示其字符编码和内容类型:
// In the way you have configured the view resolver for Thymeleaf
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
// the rest of your configuration
viewResolver.setCharacterEncoding("UTF-8");
viewResolver.setContentType("text/html; charset=UTF-8");
您可以尝试的最后一件事是为属性文件的内容包含转义序列。
通常,当您的属性文件具有默认编码,iso-8859-1
,并且您需要使用JDK提供的工具native2ascii
时,就会执行此操作:
native2ascii [ inputfile ] [ outputfile ]
请注意,您可能需要两个文件,一个像往常一样用特殊字符在其中编写属性文件,另一个是对第一个文件应用native2ascii
命令后获得的转义序列。第二个文件是您需要在Spring中将其配置为i18n资源的文件。
按照同样的思路,如果您似乎正在使用IntelliJ,则可以通过在属性文件的“设置/首选项”对话框的“文件编码”页面上选择相应的复选框来启用透明的本机到ascii转换。这将在引擎盖下处理提供的特殊字符和相应转义序列之间的转换。请查看相关文档。
正如我之前告诉您的,请注意启用此特性将修改您的属性文件,因此请确保有一个备份副本,或者在您将更改提交到源代码控制时将其考虑在内。
我有一个SpringBoot应用程序。对于Thymeleaf,对于此属性文件: 在控制器上: 在模板上: 但我在浏览器上看到:
问题内容: 这里有两个问题。我有一组通常是带有BOM的UTF-8文件。我想将它们(理想情况下)转换为没有BOM的UTF-8。似乎可以解决这个问题。但是我真的看不到任何有关用法的好例子。这将是处理此问题的最佳方法吗? 同样,如果我们能够处理清楚知道的不同输入编码(看到的ASCII和UTF-16),那将是理想的。看来这一切都是可行的。是否有一种解决方案可以采用任何已知的Python编码并以UTF-8格
我正在尝试在外部tomcat上运行camel应用程序。有2个应用程序。属性文件存在于我的项目中,一个在src/main/resources下,另一个在src/test/resources下。当我使用maven install命令创建war文件时,它使用应用程序。来自src/main/resources的属性文件(这是必需的),但当我在eclipse中使用tomcat启动应用程序时,它正在使用app
然而,这些都无济于事。 仍然没有正确保存字符。
我有一个Spring Boot应用程序,代码需要访问resources文件夹下的一个文件。这是我的申请表。属性文件: 然而,它总是抱怨: 我仔细检查了文件夹my_project/target/classes,以确保文件cert.p12存在。 在代码中,我试图访问该文件: 这个类路径到底是什么?为什么它找不到文件?谢谢
我正在读取google appengine应用程序中文件夹(/war/config/client.properties)中的属性文件。它在我的本地服务器上运行良好,但在生产模式下不工作,并且抛出异常java。安全AccessControlException:拒绝访问(java.io.FilePermission)。 你能告诉我如何在生产模式下工作吗。