2017-05-04 172 views
0

我有一个web应用程序使用Spring MVC,版本4.3.8.RELEASE。它保存Unicode字符不正确:Spring MVC显示Unicode字符不正确

enter image description here

我已经检查过很多观点:

(1)在MySQL数据库中,它是NVARCHAR,不是VARCHAR

(2)在pom.xml,我添加

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

(3)在JSP页面中,我添加

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> 

(4)内部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> 

(5)在豆控制消息,我添加

<beans:bean id="messageSource" 
      class="org.springframework.context.support.ResourceBundleMessageSource"> 
    <beans:property name="basename" value="META-INF/messages/messages"/> 
    <beans:property name="defaultEncoding" value="UTF-8"/> 
</beans:bean> 

(6)在ViewResolver的,我还用于添加属性UTF- 8 ...

但是不成功。如何解决它?

这是我的项目:https://github.com/donhuvy/temp_unicode

+0

首先,你可以尝试使用ReloadableResourceBundleMessageSource类吗?如果你想 –

+0

我也可以为'ReloadableResourceBundleMessageSource'添加配置,但是编译错误,我可以与你共享一个工作配置。 –

+0

您是否尝试删除org.springframework.web.filter.CharacterEncodingFilter? –

回答

0

问号告诉我(在这种情况下),当它被插入到表中的数据被截断。也就是说,越南的字符丢失了。

现在,要弄清楚做什么,而不是。前往Trouble with utf8 characters; what I see is not what I stored

  • 阅读“最佳实践”;它可能会指出做错了什么。
  • 阅读“问号”;它提供了问题的可能原因。
  • SELECT HEX(...)...;当正确存储(到utf8或utf8mb4)时,将为Điện lạnh,将为C490 69 E1BB87 6E 20 6C E1BAA1 6E 68

在您的评论Ä?iá»?n lạnh - 是从表中取出后?如果是这样,那就太晚了。