MySQL插入中文出现报错: ERROR 1366 (HY000): Incorrect string value: ‘\xD5\xC5\xC8\xFD‘的解决方案

MySQL插入中文出现报错: ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD’的解决方案

1 MySQL 5.5 版本

1.1 设置names为gbk

a 语法

SET names gbk;

b 示例sql语句

set names gbk;

c 示例sql语句运行截图

在这里插入图片描述

1.2 建库时需要设置字符编码集为utf8

a 语法

CREATE DATABASE IF NOT EXISTS 库名 CHARACTER SET 字符编码集;

b 示例sql语句

CREATE DATABASE IF NOT EXISTS temp CHARACTER SET utf8;

c 示例sql语句运行截图

在这里插入图片描述

d 对应的库结构如下所示:

MySQL插入中文出现报错: ERROR 1366 (HY000): Incorrect string value: ‘\xD5\xC5\xC8\xFD‘的解决方案_第1张图片

1.3 需要选中刚刚创建的数据库

a 语法

USE 表名;

b 示例mysql语句

use temp;

c 示例mysql语句运行截图

在这里插入图片描述

1.4 建表时无需设置字符编码集,因为默认会继承所在数据库中的字符编码集

a 语法

CREATE TABLE IF NOT EXISTS 表名(
字段1 数据类型(类型长度) 约束,
字段2 VARCHAR(30)/CHAR(30) 约束,
....
字段n 数据类型(类型长度) 约束);
/*
一般来说,往数据类型为VARCHAR类型或者CHAR类型的字段里面插入数据的话,才是有可能出现中文插不进去的情况,其他数据类型去插入中文就没有啥实际意义
*/

b 示例sql语句

 CREATE TABLE IF NOT EXISTS student(
    student_id int(10) PRIMARY KEY,
    name VARCHAR(30) NOT NULL,
    age int(10) DEFAULT 0);

c 示例sql语句运行截图

在这里插入图片描述

d 查看表的当前结构

MySQL插入中文出现报错: ERROR 1366 (HY000): Incorrect string value: ‘\xD5\xC5\xC8\xFD‘的解决方案_第2张图片

1.5 插入一条中文数据

a 语法

INSERT INTO 表名 VALUES(字段1对应的值,字段2对应的值....字段n对应的值);
/*
字段1就是表格第一列,字段2就是表格的第二列,字段n就是表格的第n列
这种插入写法要求,要从第一列开始一一对应进行插入,不能少一个值也不能多一个值;
*/

b 示例sql语句

 INSERT INTO student VALUES(2201,'刘备',18);

c 示例sql语句运行截图

在这里插入图片描述

1.6 查询表的内容,检查刚刚插入的一条中文数据是否能正常显示

a 语法

SELECT 插入中文字段 FROM 表名;
/*
虽然也可以用SELECT *进行查询,但是一般情况下不建议那么用,因为这样用的查询效率很低的
一般情况下,都是需要什么,就查询什么
*/

b 示例sql语句

SELECT name FROM student;

c 示例sql语句运行截图

MySQL插入中文出现报错: ERROR 1366 (HY000): Incorrect string value: ‘\xD5\xC5\xC8\xFD‘的解决方案_第3张图片

2 MySQL 5.7版本

2.1 若还没有建库建表

2.1.1 建库时设置它的字符编码集为utf8

a 语法
CREATE DATABASE IF NOT EXISTS 库名 CHARACTER SET 字符编码集;
b 示例sql语句
CREATE DATABASE IF NOT EXISTS temp01 CHARACTER SET utf8;
c 示例sql语句运行截图

在这里插入图片描述

d 对应的库结构如下所示:

MySQL插入中文出现报错: ERROR 1366 (HY000): Incorrect string value: ‘\xD5\xC5\xC8\xFD‘的解决方案_第4张图片

2.1.2 建表时无需设置字符编码集,因为默认会继承所在数据库中的字符编码集

a 语法
CREATE TABLE IF NOT EXISTS 表名(
字段1 数据类型(类型长度) 约束,
字段2 VARCHAR(30)/CHAR(30) 约束,
....
字段n 数据类型(类型长度) 约束);
/*
一般来说,往数据类型为VARCHAR类型或者CHAR类型的字段里面插入数据的话,才是有可能出现中文插不进去的情况,其他数据类型去插入中文就没有啥实际意义
*/
b 示例sql语句
 CREATE TABLE IF NOT EXISTS student(
    student_id int(10) PRIMARY KEY,
    name VARCHAR(30) NOT NULL,
    age int(10) DEFAULT 0);
c 示例sql语句运行截图

MySQL插入中文出现报错: ERROR 1366 (HY000): Incorrect string value: ‘\xD5\xC5\xC8\xFD‘的解决方案_第5张图片

d 查看表的当前结构

MySQL插入中文出现报错: ERROR 1366 (HY000): Incorrect string value: ‘\xD5\xC5\xC8\xFD‘的解决方案_第6张图片

2.1.3 插入一条中文数据

a 语法
INSERT INTO 表名 VALUES(字段1对应的值,字段2对应的值....字段n对应的值);
/*
字段1就是表格第一列,字段2就是表格的第二列,字段n就是表格的第n列
这种插入写法要求,要从第一列开始一一对应进行插入,不能少一个值也不能多一个值;
*/
b 示例sql语句
 INSERT INTO student VALUES(2201,'李四',6);
c 示例sql语句运行截图

在这里插入图片描述

2.1.4 查询表的内容,检查刚刚插入的一条中文数据是否能正常显示

a 语法
SELECT 插入中文字段 FROM 表名;
/*
虽然也可以用SELECT *进行查询,但是一般情况下不建议那么用,因为这样用的查询效率很低的
一般情况下,都是需要什么,就查询什么
*/
b 示例sql语句
SELECT name FROM student;
c 示例sql语句运行截图

MySQL插入中文出现报错: ERROR 1366 (HY000): Incorrect string value: ‘\xD5\xC5\xC8\xFD‘的解决方案_第7张图片

2.2 若已经建表了

2.2.1 先查看表的当前的字符编码集

a 语法
SHOW CREATE TABLE 表名;
/*
表名就是你要查找字符编码集的表名
*/
b 示例mysql语句
SHOW CREATE TABLE student;
c 示例mysql语句运行截图

MySQL插入中文出现报错: ERROR 1366 (HY000): Incorrect string value: ‘\xD5\xC5\xC8\xFD‘的解决方案_第8张图片

2.2.2 更改当前表的字符集

a 语法
ALTER TABLE 表名 CHARACTER SET 更改后的字符集;
/*
表名就是你要当前表的表名
*/
b 示例sql语句
ALTER TABLE student CHARACTER SET utf8;
c 示例sql语句运行截图

在这里插入图片描述

d 对应的表结构如下所示:

MySQL插入中文出现报错: ERROR 1366 (HY000): Incorrect string value: ‘\xD5\xC5\xC8\xFD‘的解决方案_第9张图片

2.2.3 更改需要插入中文的字段的字符编码集

a 语法
ALTER TABLE 表名 MODIFY COLUMN 字段 原来的字段数据类型(字段长度) CHARACTER SET utf8 约束;
/*
表名就是你要当前表的表名
*/
b 示例sql语句
ALTER TABLE student MODIFY COLUMN name VARCHAR(30) CHARACTER SET utf8 NOT NULL;
c 示例sql语句运行截图

在这里插入图片描述

d 对应的表结构如下所示:

MySQL插入中文出现报错: ERROR 1366 (HY000): Incorrect string value: ‘\xD5\xC5\xC8\xFD‘的解决方案_第10张图片

2.2.4 插入一条中文数据

a 语法
INSERT INTO 表名 VALUES(字段1对应的值,字段2对应的值....字段n对应的值);
/*
字段1就是表格第一列,字段2就是表格的第二列,字段n就是表格的第n列
这种插入写法要求,要从第一列开始一一对应进行插入,不能少一个值也不能多一个值;
*/
b 示例sql语句
INSERT INTO student VALUES(2201,'张三',9);
c 示例mysql语句运行截图

在这里插入图片描述

2.2.5 查询表的内容,检查刚刚插入的一条中文数据是否能正常显示

a 语法
SELECT 插入中文字段 FROM 表名;
/*
虽然也可以用SELECT *进行查询,但是一般情况下不建议那么用,因为这样用的查询效率很低的
一般情况下,都是需要什么,就查询什么
*/
b 示例sql语句
SELECT name FROM student;
c 示例mysql语句运行截图

MySQL插入中文出现报错: ERROR 1366 (HY000): Incorrect string value: ‘\xD5\xC5\xC8\xFD‘的解决方案_第11张图片

你可能感兴趣的:(MySQL学习,学习中疑难问题,中文报错,MySQL5.5,MySQL5.7,ERROR,1366,解决方案)