簡體   English   中英

Spring - Thymeleaf - Tomcat - >無法正確處理UTF-8字符

[英]Spring - Thymeleaf - Tomcat -> can not process UTF-8 character correctly

我試圖在Spring-MVC網頁中顯示UTF-8字符。

utf-8值來自數據庫。 我已經將我的數據庫轉換為utf-8。

我寫的Web服務正在按預期顯示值,但是在網頁中它沒有顯示正確的值。

下面是我的彈簧配置,請讓我知道我做錯了什么。

我使用百里香作為模板引擎:

Thymeleafe配置:

<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設置ThymeleafViewResolver而不是ServletContextTemplateResolver

您應該嘗試將utf添加到百里香視圖解析器:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM