版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hekai7217/article/details/80900375
报错信息显示:
mysql> insert into stu1(name,age) values (‘马云’,22);
ERROR 1366 (HY000): Incorrect string value: ‘\xC2\xED\xD4\xC6’ for column ‘name’ at row 1
出现这个问题是 数据中字符编码问题 latin1(西欧编码 iso-8859-1)
1.第一步 查看当前数据的编码:
status;
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: latin1
Db characterset: LATIN1(编码有问题)
Client characterset: gbk
Conn. characterset: gbk
TCP port: 3306
Uptime: 6 hours 38 min 18 sec
2.修改数据库的编码:
alter database ts23 character set gbk;
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: latin1
Db characterset: gbk(修改编码成功了)
Client characterset: gbk
Conn. characterset: gbk
TCP port: 3306
Uptime: 6 hours 40 min 27 sec
3.之后添加数据还是失败了 (表中的编码没有改)
4.查看表中的编码:
show create table stu1;
| stu1 | CREATE TABLE `stu1` (
`name` varchar(20) DEFAULT NULL,
`age` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |(编码有问题)
5.修改编码:
alter table stu1 character set gbk;
6.查看创建表的信息:
show create table stu1;
| stu1 | CREATE TABLE `stu1` (
`name` varchar(20) CHARACTER SET latin1(编码有问题) DEFAULT NULL,
`age` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk |
7.表中字段编码有问题
alter table stu1 change name name varchar(20) character set gbk;
怎么避免这个问题:
建数据库的时候用:gbk
建表的时候 用gkb;
有字符串字段的时候用gbk;