hibernate练习中,向数据库中插入数据,汉字乱码,,请教各位原因和解决方法

解决方案 »

  1.   

    1.有一点你得注意一下,有的时候存进去的时候是乱码(在数据库终端或者可视化都有可能是乱码),但在程序里取出来的时候是正常的,那么就没有必要在意。
    2.看你用的是什么数据库,如果是MySQL的话在Hibernate里设置一下mysql的方言。
    3.还有就是你要把数据库的配置文件,建立的数据库,数据表,页面和IDE开发工具都设置成一样的编码。
    4.用代码转一下,如果你用struts1的话
    byte[] buffert=request.getParameter("页面传过来的内容").getBytes("ISO-8859-1"); 
    String 输入数据库的内容=new String(buffert,"UTF-8");乱码出现的原因多种多样,你要不断的去尝试不同的解决办法这样才可以。因为大部分每个人碰到的乱码问题都不是一两个方法就能解决的。别人的方法有可能不适合你的程序。
      

  2.   

    顶。
    造成乱码有很多情况
    需要一步一步去测试。
    就像楼上说的,MySql 是最容易出现编码错误的。
    它需要你建表的时候,建立编码方式。比如还有,你读取表单数据的时候,是不是读出的也是乱码呢?
    如果是,就需要改变下你.html 页面或者.jsp 页面的编码方式咯。
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>再或者,从表单读取出来的数据是正常的,然后放进数据库的却是乱码
    这时候就看看hibernate 的编码设置方式有没有问题。虽然我说的这些,目前还不能帮你实际的解决问题,但这是一种解决方法的思路。
      

  3.   


    问题分几步。
    1.确认汉字在入库之前是否为乱码,可以用System.out输出一下看看。
    2.lz的环境是什么?如果只是普通控制台程序的话,插入数据库之前的汉字应该没问题。那很可能是Mysql的连接串编码问题,CharactorEncoding参数没有设置或设置不正确,我一般用utf-8.
    3.mysql5.0的字符编码可以设置到字段的级别,先看看字段是否支持中文。如果支持,才能调CharactorEncoding
      

  4.   

    主要就几个地方,页面编码格式、tomcat、还有就是数据库。把这几个地方的编码格式统一应该就好了。
      

  5.   

    看你用的是什么数据库。MySQL的话在Hibernate里设置一下mysql的方言、其他的话建议用过滤器、、
      

  6.   

    解决了,修改mysql的注册信息,把方言设成gbk,,辛苦大家了