mysql在命令行中插入中文出现乱码
在表中插入中文时出现了多种情况,包括不兼容、编码、乱码等问题,并为此进行研究和解决。
一、不兼容问题
由于在电脑上既安装了MySQL,又安装了XAMPP,因此导致了与XAMPP中MariaDB出现了不兼容问题,在这过程中令我百思不得其解。最终选择了最简单粗暴的方式,双双卸载,选择其中之一。
二、编码问题
首先,使用如下的命令查看输出窗口使用的字符编码
show variables like ‘char%’;
表:正确统一的编码格式
+--------------------------+--------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | D:\xampp\mysql\share\charsets\ |
+--------------------------+--------------------------------+
如果使用的字符编码有所不同,可根据
修改mysql的字符集进行相应更改,如下:
mysql> set character_set_client=utf8;
mysql> set character_set_connection=utf8;
mysql> set character_set_database=utf8;
mysql> set character_set_results=utf8;
mysql> set character_set_server=utf8;
mysql> set character_set_system=utf8;
mysql> set collation_connection=utf8;
mysql> set collation_database=utf8;
mysql> set collation_server=utf8;
此外将当前数据库的编码也要统一为utf8
mysql>alter database student character set utf8
修改数据库student的字符集:
说明
utf8mb4是utf8的超集。为了节省空间,一般情况下使用utf8就可以了。
这里既可以使用utf8,也可以使用utf8mb4,根据项目需要。
可以简单的理解 utf8mb4 是目前最大的一个字符编码,支持任意文字。
三、乱码问题
由于在Window系统中默认的编码格式为gbk,而我们要在数据库中显示的数据为utf8,这就导致了在cmd命令行中执行插入或修改字符串时显示为乱码,为解决这一问题,我们要在执行sql语句前,先将cmd默认的
Variable_name | Value |
---|---|
character_set_client | utf8mb4 |
character_set_results | utf8mb4 |
更改为
Variable_name | Value |
---|---|
character_set_client | gbk |
character_set_results | gbk |
这样才能将字符串完整的插入到数据库当中,避免由于编码格式不匹配而出现乱码的情况。
修改方式:
set character_set_client=gbk; 告诉我客户端这边的文字编码
set character_set_results=gbk; 告诉mysql希望返回的结果集编码;
实验中发现只要客户端是gbk编码的,只要设置这个就可以解决乱码这个问题。
还有另外一个好用的命令可以同时达到上面两条指令的效果:
set charset gbk; 和上面两个效果一致。
说明
此次更改仅仅是更改当前命令行窗口的编码格式和输出编码格式,不会影响输出和显示。当重新打开一个cmd命令行时,将重新恢复成utf8的编码格式。——特别注意
总结
以上是我遇到的mysql编码问题,并不代表可以解决到所有问题,但希望可以帮到大家,避免入坑。