MySQL数据库插入中文出现“Incrrect Strng value '\xE9\x9C\x82'"错误
来源:互联网 发布:ubuntu 安装 交换分区 编辑:程序博客网 时间:2024/05/01 01:42
最近在做一个系统,关于商品买卖的,在商品买卖前要先发布商品,商品的添加是通过一个后台系统添加的。后台系统采用的是Spring+Flex;数据库的操作都是用的Spring自带的jdbcTemplate框架。商品发布一直没有问题,也可以插入中文。但是,一次同事从淘宝上考下来一段文字( 霂末 夏季嘻哈潮网帽 韩版高挺透气卡车货车帽棒球帽女男士遮阳帽子可调节MZ1053 眼镜 黑色 )后,后台报了如下错误:
Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x90</...' for column ……
一开始出了问题后,就像没头苍蝇似的到网上找各种资料,各种解决办法但是遇到的都是各种错误。无助啊!
后来,静了静心。做了以下测试:
1.首先通过MySQL客户端将上面的那条数据通过insert语句插入到数据库,但是还是出现了这个错误:
ERROR 1366: 1366: Incorrect string value: '\xE9\x9C\x82\xE6\x9C\xAB...' for column 'productName' at row 1
SQL Statement:
INSERT INTO `community_dbo`.`product` (`productName`) VALUES ('霂末 夏季嘻哈潮网帽 韩版高挺透气卡车货车帽棒球帽女男士遮阳帽子可调节MZ1053 眼镜 黑色')
通过这个测试说明不是Java程新的错误。
2.新建一个MySQL数据库表,表的编码方式与原来的商品表的不同(商品表的是gb2312_gb2312_chinese_ci,改过之后用的是utf8_default_collation)
再次插入,没有问题,也不报错了,由此找到问题的原因是数据库表的编码方式。
但是,有一个疑问:其他的中文插入是没有问题的,只有个别特殊的,造成上面的错误的是(霂末 夏季嘻哈潮网帽 韩版高挺透气卡车货车帽棒球帽女男士遮阳帽子可调节MZ1053 眼镜 黑色)中的第一个中文,网上有看到说是"mysql中规定utf8字符MaxLen=3,但是某些unicode字符转成utf8编码之后有4个字节,";
貌似是有道理的。但是还是不是太明白。
因为第二天上班的时候又有一个表出了同样的问题,很是苦恼,所以决定,好好调查一下。
在插入中文的时候,有时会出现编码错误的问题,导致插入数据库出错,问题到底出在哪?为什么把gbk2312编码格式换成了utf-8就可以了。首先想到的就是查一下两者之间的差别,到网上搜到下面一段话,觉得就是问题的所在:
关于GBK、GB2312、UTF8
UTF- 8:Unicode Transformation Format-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。
GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包含全部中文字符,是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBD大。
GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换:
GBK、GB2312--Unicode--UTF8
UTF8--Unicode--GBK、GB2312
引自http://down.chinaz.com/server/201111/1423_1.htm
- MySQL数据库插入中文出现“Incrrect Strng value '\xE9\x9C\x82'"错误
- Python: 插入数据库报错:Incorrect string value: '\\xE9\\x9C
- 插入Mysql数据库是,字符utf8编码超过3位时的错误以及解决,Incorrect string value: '\xF0\xA1\xBF\xA8\xE9\x82...' for column
- 向mysql插入数据时出现Incorrect string value: '\xEF\xBF\xBD\xE9\x8F\x83...' for column...at row 1
- Mysql插入中文错误 Incorrect string value
- mysql插入中文出现错误:incorrect string value:'\xD5\xC5\xC8\xFD\xB7\xE1'的解决办法
- 今天遇到Mysql插入数据里有中文字符出现Incorrect string value的错误
- 关于MySQL插入数据里有中文字符出现Incorrect string value的错误的解决方法
- MySQL数据库 查询表数据出现中文乱码 及 插入中文报错Incorrect string value问题解决方法
- Mysql 插入中文错误:Incorrect string value 解决方案
- mysql 中插入中文出现的 Incorrect string value: '\xE5\xA5\xBD\xE5\xAE\xB6...' from column错误
- MySql系列:中文写入数据库出现错误java.sql.SQLException: Incorrect string value: '\xE5\xxxx' for column 'xxxx' at r
- 文字存入mysql数据库时出现Incorrect string value错误
- MySql中文乱码错误 mysql error 1366 incorrect string value 不能插入中文字符
- Mysql插入中文错误
- MySQL中文插入错误
- mysql数据库插入中文时出现ERROR 1…
- MySQL数据库中插入中文出现乱码的解决方案
- HDU 4891 The Great Pan (字符串处理)
- Android实用闹钟开发(三)---AlarmManager和Calendar
- Android 一键清理动画
- android闹钟开发(四)--音乐播放与音量调节
- android屏幕适配
- MySQL数据库插入中文出现“Incrrect Strng value '\xE9\x9C\x82'"错误
- 字典树 详解
- 去掉ExpandableListView的箭头图标
- Android设置RadioButton在文字的右边
- LoadRunner设置检查点的几种方法介绍
- BUPT Summer Journey #test7 E
- 64位Linux上编译32位软件
- 清除浮动的方法
- poj 1656 Counting Black