如何在Spring JSF MySQL应用程序中正确显示阿拉伯语?

时间:2012-04-03 12:58:54

标签: mysql spring hibernate jsf-2 heidisql

我正在使用第3版 JSF 2 MYSQL Hibernate ,而Heidi SQL是GUI数据库的工具 我有阿拉伯字符的编码问题是阿拉伯语单词作为??????????插入数据库中,并以相同的形式出现在视图中。

所以这是我的编码配置:

1-数据库:

  • 字符集:utf 8

  • 整理:utf8_general_ci

2-春天:

我正在使用以下过滤器:

<filter>
    <filter-name>encoding-filter</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>encoding-filter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
  </filter-mapping>

3- JSF:

据我所知:Facelets默认使用UTF-8

4-休眠:

这是数据库的连接URL:

jdbc:mysql://127.0.0.1:3306/mydb?zeroDateTimeBehavior=convertToNull&useUnicode=true&connectionCollation=utf8_general_ci&characterSetResults=utf8

请告知我是否遗漏了配置中的内容。

2 个答案:

答案 0 :(得分:2)

您忘记了JDBC URL中的characterEncoding=UTF-8参数。这是修改后的JDBC URL,其中包含所需的最少参数,以便正确处理UTF-8:

jdbc:mysql://127.0.0.1:3306/mydb?useUnicode=true&characterEncoding=UTF-8

另见:

答案 1 :(得分:1)

如果使用tomcat,则需要在配置参数中添加以下参数:

-Dfile.encoding=UTF-8 

除了上面的hibernate配置。