问题场景:
用建表语句创建数据表后,往数据表增加记录,出现“Incorrect string value: '\xE5\xBC\x80\xE5\x8F\x91...' for column 'dname' at row 1:”问题,这是常见的编码问题
这是我的建表语句
CREATE TABLE `dept` (
`deptno` int(0) ,
`dname` varchar(255),
`db_source` varchar(255)
) ;
添加语句
INSERT INTO `dept` VALUES (1, '开发部', 'db02');
INSERT INTO `dept` VALUES (2, '人事部', 'db02');
INSERT INTO `dept` VALUES (3, '财务部', 'db02');
INSERT INTO `dept` VALUES (4, '市场部', 'db02');
INSERT INTO `dept` VALUES (5, '运维部', 'db02');
问题描述
我在用sql命令建表之后,往表中添加数据,报异常“1366 - Incorrect string value: '\xE5\xBC\x80\xE5\x8F\x91...' for column 'dname' at row 1”:
原因分析:
数据编码未设置,识别不了中文字符
将中文插入到数据库中失败报异常是因为没有将数据库编码设置为支持中文的编码,mysql的默认编码是Latin1,不支持中文,应该设置为utf8
解决方案:
设置数据库表编码为utf8
观察了半天,终于发现我在创建数据库表的时候确实没有设置编码,如果你的数据表中存在中文字段,一定要设置编码为utf8,不然就会识别不了中文数据,只需要在创建数据表时在后面加上 character set utf8 ,这样我们的编码就设置为utf8了
CREATE DATABASE '数据库名称' CHARACTER SET utf8;
添加成功后再看看我们的数据表里的数据