spring .properties文件中的消息不显示UTF-8字符

gj3fmq9x  于 2023-02-15  发布在  Spring
关注(0)|答案(3)|浏览(119)

正如标题所说,我只能补充说,如果我在html文件中手动输入ó,就可以了。
视图解析器:

<bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
    <property name="prefix" value="/WEB-INF/templates/" />
    <property name="suffix" value=".html" />
    <property name="templateMode" value="HTML5" />
    <property name="cacheable" value="false"/>
    <property name="characterEncoding" value="UTF-8"/>
</bean>

<bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine">
    <property name="templateResolver" ref="templateResolver" />
</bean>

<bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver">
    <property name="templateEngine" ref="templateEngine" />
    <property name="characterEncoding" value="UTF-8"/>
    <property name="order" value="1"/>
</bean>

pom.xml:

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

html输入示例:

<h2><p th:text="#{homepage.greeting}">Welcome</p></h2>

在html文件的标签内:

<meta charset="UTF-8"/>

在IntelliJ Idea中,我将项目编码设置为UTF-8,属性文件的默认编码为UTF-8 x1c 0d1x
老实说,我不知道问题出在哪里。当我把locale改为pl时,输出如下:

抱歉,我还不能发布图片。任何帮助将不胜感激。
在web.xml中尝试此过滤器,仍然没有结果。

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
yhxst69z

yhxst69z1#

好吧,我知道了。这样吧:
我有下面的代码:

<bean id="messageSource"
      class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="messages" />
</bean>
    • 选项1:**只需将其添加为另一个属性:
<property name="defaultEncoding" value="UTF-8"/>
    • 备选案文2:**改为:
<bean id="messageSource"
      class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="classpath:messages"/>
    <property name="defaultEncoding" value="UTF-8"/>
</bean>

如果您将其更改为可重新加载,请记住也要将属性值从"messages"更改为"classpath:messages"。由于某种原因,如果我不更改它,它将无法找到消息包。

izkcnapc

izkcnapc2#

使用ResourceBundleMessageSource对象时,需要设置默认编码,如下所示:

@Bean
public MessageSource messageSource() { 
    ResourceBundleMessageSource resource = 
            new ResourceBundleMessageSource();
    resource.setBasename("messages");
    resource.setDefaultEncoding("utf-8");
    return resource;    
}
bwleehnv

bwleehnv3#

在我的情况下,设置默认编码是不够的,还必须创建UTF-8格式的属性文件。
更多详情请参考SpringBoot - UTF-8 Doesnt work in messages.properties

相关问题