我在getHibernateTemplate().save()的时候,存入数据库的是乱码,但我确认数据库编码是UTF-8,并且已经在web.xml设置了:
<filter>
    <filter-name>Spring character 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>Spring character encoding filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
所以感到不明白,请问你们有遇到过这个问题吗?PS:数据库是mysql,web页面编码、web.xml的过滤器都设好了,甚至自己写了一个Filter过滤字符编码,都试过。没办法了。。

解决方案 »

  1.   

    这个我也不是很清楚
    但提醒哈
    是不是在安装MySQL 时候设置的编码和 你现在的编码不匹配 也会乱码!
    你看看你建的数据库和表是什么样的编码 ?
    也许和这个有关
      

  2.   

    这个问题有可能是lz的数据库的编码不是utf-8的。lz在数据库的console中打下边的命令
    set names UTF8;
    或者
    set names GBK;
    然后在查看数据库中的数据是否正常。
      

  3.   

    如果显示正常说明是数据库编码的问题。需要设置mysql的编码;
    1、修改整个数据库服务器在my.cf文件的[mysqld]段设置:
    default-character-set=utf82、单独设置某个数据库:
    alter database testdb character set utf8; 
      

  4.   

    <Connector port="8080" maxHttpHeaderSize="8192" minProcessors="10" maxProcessors="100"
                   maxThreads="150" minSpareThreads="25" maxSpareThreads="75" debug="0" 
                   enableLookups="false" redirectPort="8443" acceptCount="100"
                   connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true"/>用上述代码覆盖tomcat的server.xml中相应的内容即可
      

  5.   

    谢谢各位支持,确认了是数据库的问题,但找不到具体原因。总结一下:
    1》数据库编码是UTF8
    2》数据表以及相关字段的编码是UTF8
    3》在程序中,自己写了个EncodingFilter过滤字符编码,并设置到web.xml中
    4》在web.xml中使用org.springframework.web.filter.CharacterEncodingFilter 对编码进行过滤
    5》确认JSP文件的编码是UTF-8,并且已设置正确的字符编码。后来重装了系统后,重新安装Mysql,再运行程序,就可以了,呵呵,真是奇怪。