Mysql插入中文时错误:ERROR 1366 (HY000): Incorrect string value: '\xE6\x9D\x8E\xE5\x8B\x87' for column

错误提示:
ERROR 1366 (HY000): Incorrect string value: ‘\xE6\x9D\x8E\xE5\x8B\x87’ for column ‘Sname’ at row 1

前提:
创建的表如下:

创建学生表Student
CREATE TABLE Student          
(Sno   CHAR(10) PRIMARY KEY,    
Sname  CHAR(20) UNIQUE,
Ssex    CHAR(2),
Sage   SMALLINT,
Sdept  CHAR(20)); 

**插入中文时错误提示:
中文:**错误1366(hy000):第1行“sname”列的字符串值不正确:\xe6\x9d\x8e\xe5\x8b\x87

解释:
已建立的表无法插入中文字符串,原因是因为数据表中的内容为latin1字符集,由下图的的资料可知,latin1字符集为8bit,这说明它是不能表示中文的,故而当然会报改错:
解决办法:
1、 首先通过语句查看: show create table Student;
2、 发现如下所示:
Mysql插入中文时错误:ERROR 1366 (HY000): Incorrect string value: '\xE6\x9D\x8E\xE5\x8B\x87' for column
3、 然后通过语句修改数据表编码:alter table Student default character set utf8;
4、 但是修改后仍然出现错误。
5、 我们再次查看编码:show create table Student ;
6、 发现如下所示:
Mysql插入中文时错误:ERROR 1366 (HY000): Incorrect string value: '\xE6\x9D\x8E\xE5\x8B\x87' for column

7、 注意 Student 的编码仍然为 latin1 ,虽然此时表的编码已经是 utf8 , 但是不知道为什么 列的编码没有更改过来
8、 下面就是更改列的编码即可
alter table Student change Sname Sname varchar(20) character set utf8;


小结:


查看数据表的编码:

 show create table Student; 

修改表的编码方式:

 alter table Student default character set utf8;

该命令用于将表Student的编码方式改为utf8;

修改字段的编码方式:

 alter table Student change Sname Sname varchar(20) character set utf8;
 (注意看截图)
该命令用于将表Student中Sname字段的编码方式改为utf8

改其他项同理