美篇里的美食天下私信发送失败不出去怎么办

异常处理:使用UTF-8编码MySQL仍然抛出Incorrect string value异常_数据库技术_Linux公社-Linux系统门户网站
你好,游客
异常处理:使用UTF-8编码MySQL仍然抛出Incorrect string value异常
来源:Linux社区&
作者:shootyou
之前还以为从上至下统一用上UTF-8就高枕无忧了,哪知道今天在抓取新浪微博的数据的时候还是遇到字符的异常。
从新浪微博抓到的数据在入库的时候抛出异常:
Incorrect string value: '\xF0\x90\x8D\x83\xF0\x90...'
发现导致异常的字符不是繁体而是某种佛经文字。。。额滴神。。。但是按道理UTF-8应该能支持才对啊,他不是万能的么?
原来问题出在mysql上,mysql如果设置编码集为utf8那么它最多只能支持到3个字节的UTF-8编码,而4个字节的UTF-8字符还是存在的,这样一来如果你建表的时候用的utf8字符集出异常就理所当然了。
解决方法很简单,修改字段或者表的字符集为utf8mb4。
比较蛋疼的是,字符集utf8mb4在mysql 5.5.3之后才支持。。。
要研究如何升级mysql了。 见
相关资讯 & & &
& (10/26/:50)
& (02/18/:33)
& (01月22日)
& (02/19/:18)
& (02/15/:21)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款今天写一个团购网站练练手,用到了S2SH大整合,有点激动人心,但是遇到的麻烦也不少,毕竟第一次做嘛,这篇日志要说的是一个大熟人,
激动人心的写完代码,测试一切正常,可是输入中文就杯具了,出现以下错误。
心里明白出现这个错误,十有八九都是数据库编码出问题了,以前懒得研究,还是抱有侥幸心里在后台写了个Syso,看看控制台的输出是否乱码,结果显示正常,没有乱码,那就确定是数据库的编码问题了。
我用的的 mysql 数据库,版本5.1。
使用 show variables like 'character%' 查看数据库的编码,果然是latin1,意料之中。
如果项目正在测试当中,数据不重要的话,一劳永逸的解决办法是,使用alert database tuanplus character set utf8 更改数据库的编码格式,再重新建表(Hibernate中,指定hibernate.hbm2ddl.auto=create,重新部署项目,hibernate会自动重新建表),查看此时的数据库编码,嘿嘿,是utf8了。异常解除。
如果项目中的数据是重要数据的话,还是有解决办法滴。
使用 alter table address convert to character set utf8 转换需要插入汉字的数据表编码为utf8即可(此例中的数据表是address):
事先最好备份数据,以免意外。
感慨一句啊,乱码问题,得从娃娃抓起。
阅读(...) 评论()

我要回帖

更多关于 微博私信图片发不出去 的文章

 

随机推荐