java 向 mysql 插入汉字 Incorrect string value 解决办法

[size=small]今天写一个团购网站练练手,用到了S2SH大整合,有点激动人心,但是遇到的麻烦也不少,毕竟第一次做嘛,这篇日志要说的是一个大熟人,[color=red]Incorrect string value:[/color] '\xE6\x9B\xB9\xE5\x86\xAC...' for column 'realname' at row 1,嘿嘿,以前见到的不少吧。

激动人心的写完代码,测试一切正常,可是输入中文就杯具了,出现以下错误。

心里明白出现这个错误,十有八九都是数据库编码出问题了,以前懒得研究,还是抱有侥幸心里在后台写了个Syso,看看控制台的输出是否乱码,结果显示正常,没有乱码,那就确定是数据库的编码问题了。

我用的的 mysql 数据库,版本5.1。

使用 show variables like 'character%' 查看数据库的编码,果然是latin1,意料之中。


如果项目正在测试当中,数据不重要的话,一劳永逸的解决办法是,使用[color=red]alert database tuanplus character set utf8 [/color]更改数据库的编码格式,再重新建表(Hibernate中,指定hibernate.hbm2ddl.auto=create,重新部署项目,hibernate会自动重新建表),查看此时的数据库编码,嘿嘿,是utf8了。异常解除。


如果项目中的数据是重要数据的话,还是有解决办法滴。

使用 [color=red]alter table address convert to character set utf8[/color] 转换需要插入汉字的数据表编码为utf8即可(此例中的数据表是address):


事先最好备份数据,以免意外。
[/size][size=medium][/size]
感慨一句啊,乱码问题,得从娃娃抓起。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值