ygyl123 2009-07-14 10:11
浏览 211
已采纳

struts+hibernate+mysql中文乱码问题

我在新增页面的时候,如是对象的某个属性为中文,就会抛下面那个异常,导致新增不成功
net.sf.hibernate.JDBCException: Could not execute JDBC batch update
at net.sf.hibernate.impl.BatcherImpl.executeBatch(BatcherImpl.java:129)
at net.sf.hibernate.impl.SessionImpl.executeAll(SessionImpl.java:2417)
at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2367)
at net.sf.hibernate.impl.SessionImpl.flush(SessionImpl.java:2236)
at net.sf.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:61)
Caused by: java.sql.BatchUpdateException: General error message from server: "Incorrect string value: '\xD6\xD0\xB9\xFA' for column 'url_name' at row 1"
at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1492)
at net.sf.hibernate.impl.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:54)
at net.sf.hibernate.impl.BatcherImpl.executeBatch(BatcherImpl.java:122)
... 31 more

如果程序中不输入中文就能新增成功;
如查数据库中某个表的某一属性是中文,然后显示在页面是????;
我在hibernate.cfg.xml里面配了jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=GB2312
我的问题是,怎么去解决这个中文乱码问题,上网查了一会儿,试了几种方案都不行。所以来这问问了,请大家帮忙,谢谢!!
[b]问题补充:[/b]
哥们,按你这样做不行呀
[b]问题补充:[/b]
我们那个项目是以前开发的,现在只是往里面加一些功能,但是以前开发的时候,采用的编码方式是gbk,我现在感觉问题是出在这。jsp文件,java文件,都是用的gbk,但是现在也没有办法去改呀,要转的话会出好多编码方面的错的,请教各位在这种情况下怎么去解决乱码问题
[b]问题补充:[/b]
大家帮我想,有什么好办法去解决
[b]问题补充:[/b]
jh_soft哥们的意思是把页面传过来的每一个属性都要转一遍格式吗

  • 写回答

8条回答 默认 最新

  • liyistudio 2009-07-14 10:43
    关注

    三种方案:
    方案一:检查数据是用字符类型,在数据插插入之前转成这种格式。但是你显示到页面,你可能又得与数据格式转成GBK或UTF-8等。
    方案二:重新安装数据库,在选择字符集时,选择UTF-8,这样就可以大功告成了。
    方案三:查看Mysql文档,将字符集改UTF-8,如果可以成功的话,这样就更好啦。不过一般改不过来,还得重装。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?