最近在做毕业设计,遇到一个问题,当我用hibernate往mysql中插入中文是发现时乱码,
我用的是hibernate3.0,数据库是MYSQL,在数据库中查看是发现是乱码,我参照一些网上的解决方案,比如添加过滤器,但是
还是不行

解决方案 »

  1.   

    数据库中直接插入看看是不是乱码 是的话 数据库编码的问题
    不是的话 过滤器也添加了 页面编码什么的都统一成utf8
      

  2.   

    在建数据库的时候,需要设置编码,Mysql默认的编码是拉丁文 比如,
    create database db_name default character set=utf8;
    在使用hibernate是没有问题的。先查看下数据库的编码方式,
    show variables like "character%";
      

  3.   

    我的数据库编码是utf-8,过滤器默认编码也是utf-8
      

  4.   

    更奇怪的是当我手动插入数据时居然显示 data too long ....
    这我就不明白了,用hibernate插入式为什么就没有报错,而手动插入时就报错,
    真是让人暴走
      

  5.   

    登录mysql后,使用status命令,查看一下,看那4个编码集的地方是不是所有都显示UTF-8
      

  6.   

    Connection id:          3
    Current database:       filmsystem
    Current user:           root@localhost
    SSL:                    Not in use
    Using delimiter:        ;
    Server version:         5.0.22-community-nt
    Protocol version:       10
    Connection:             localhost via TCP/IP
    Server characterset:    utf8
    Db     characterset:    utf8
    Client characterset:    utf8
    Conn.  characterset:    utf8
    TCP port:               3306
    Uptime:                 12 min 20 secThreads: 1  Questions: 58  Slow queries: 0  Opens: 4  Flush tables: 1  Open tabl
    es: 9  Queries per second avg: 0.078
      

  7.   

    那应该就是你项目JSP文件可能不是UTF8。
    整个项目属性以及项目中所有的文件的属性都设为UTF8
      

  8.   

    如果用了JSP页面的话,JSP内容中三个编码集地方也设为UTF8
      

  9.   

    对了,你status之前,有按2楼的方式改吗?
    如果有的话,改完之后得重启MYSQL
      

  10.   

    首先我的MYSQL在装是就设置成了utf-8,还有就是这和jsp没有关系,应为我是用junit测试的,完全就是java
      

  11.   


    哦。那你试试这种:
    str=new String(str.getBytes("ISO-8859-1"),"gb2312");