【问题标题】:Spring - Thymeleaf - Tomcat -> can not process UTF-8 character correctlySpring - Thymeleaf - Tomcat -> 无法正确处理 UTF-8 字符
【发布时间】:2015-12-28 22:59:24
【问题描述】:

我正在尝试在 Spring-MVC 网页中显示 UTF-8 字符。

utf-8 值来自数据库。我已经将我的数据库转换为 utf-8。

我编写的 Web 服务正在按预期显示值,但是在网页中它没有显示正确的值。

下面是我的spring配置,请告诉我我做错了什么。

我正在使用 thymeleaf 作为模板引擎:

百里香配置:

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

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

<bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
    <property name="templateEngine" ref="templateEngine"/>
</bean>

我还在我的 web.xml 中添加了 CharecterEncodingFilter,如下所示:

<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>

我也尝试过更改tomcat配置中的server.xml:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000" redirectPort="8443"
           URIEncoding="UTF-8" useBodyEncodingForURI="true"/>

但它没有按预期工作: 它在给我看???代替实际值。奇怪的是,当我使用实际值的 Unicode 值时,它就可以工作了。

谁能告诉我我做错了什么或错过了什么。

使用 XML 更新 Ans 配置

<bean id="templateResolver"
      class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
    <property name="prefix" value="/WEB-INF/pages/"/>
    <property name="suffix" value=".html"/>
    <property name="templateMode" value="HTML5"/>
</bean>

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

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

我必须在 ThymeleafViewResolver 中设置 characterEncoding 而不是 ServletContextTemplateResolver

【问题讨论】:

    标签: java spring-mvc tomcat utf-8 thymeleaf


    【解决方案1】:

    您应该尝试将 utf 添加到 thymeleaf 视图解析器:

    Bean
    public ThymeleafViewResolver viewResolver() {
        ThymeleafViewResolver thymeleafViewResolver = new ThymeleafViewResolver();
        thymeleafViewResolver.setTemplateEngine(templateEngine());
        thymeleafViewResolver.setCharacterEncoding("UTF-8");
        return thymeleafViewResolver;
    }
    

    【讨论】:

      猜你喜欢
      • 2016-01-11
      • 2012-07-03
      • 2011-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-28
      • 2016-01-08
      相关资源
      最近更新 更多