Windows中MySQL无法插入或识别中文字符的问题及解决方案

1.问题描述

在window上安装了MySQL数据库,使用MySQL命令行客户端导入数据,无论是通过 sql 脚本导入,还是直接使用插入语句插入,只要数据中含有中文,经常会出报错
主要报错有:

ERROR 1366 (HY000): Incorrect string value: ‘\xA4\x95’ for column ‘name’ at row 1
ERROR 1406 (22001): Data too long for column ‘name’ at row 1

我创建数据库时字符设置为:

charset=utf8;

当我将:

Server characterset: utf8mb4
Db characterset: utf8
Client characterset: gbk
Conn. characterset: gbk

这几个都设置为utf8时,通过sql导入含中文字符数据正常,具体设置见:
MySQL报错: ERROR 1366 和 1406 解决办法
但是!!!
这时直接写插入语句在MySQL命令行客户端插入含中文字符数据,却会报1366或1406的错;
而且查询语句条件中如果含中文,则根本识别不出中文,体现出来就是查不到符合条件的数据,或者查询结果中含中文字符的字段显示为问号,真是让人心烦!

2.原因及解决办法

2.1 原因:

问题出在了MySQL的命令行客户端
Windows上的MySQL命令行客户端使用的编码格式是 gbk,而数据库的编码格式为 utf8,编码不一致导致了无法识别或者乱码产生;

2.2 解决办法:

我们先查看一下查看数据库的编码:

 show variables like "%char%";

如图,前面通过修改Client characterset 和 Conn. characterset 编码格式为utf8,使得sql文件导入含中文字符数据正常;
在这里插入图片描述
现在只好又将原来设置改回gbk,,通过下面的命令一次性改回gbk :

set names gbk;

修改后如图,我们再看数据库的编码格式,又变回来了:
在这里插入图片描述
这时就可以正常在客户端直接写含中文字符的插入语句了,查询含中文字符也正常了。

总的来说还是比较麻烦,所以建议尽量采用一种方式操作会比较好,希望后续能找到更好的解决办法。

参考:
https://www.cnblogs.com/1102whw/p/7815466.html

猜你喜欢

转载自blog.csdn.net/Artificial_idiots/article/details/106894206
今日推荐