MySql解决中文乱码问题


mysql在命令行中插入中文出现乱码

在表中插入中文时出现了多种情况,包括不兼容、编码、乱码等问题,并为此进行研究和解决。


一、不兼容问题

由于在电脑上既安装了MySQL,又安装了XAMPP,因此导致了与XAMPP中MariaDB出现了不兼容问题,在这过程中令我百思不得其解。最终选择了最简单粗暴的方式,双双卸载,选择其中之一。

二、编码问题

首先,使用如下的命令查看输出窗口使用的字符编码

show variables likechar%;

表:正确统一的编码格式

+--------------------------+--------------------------------+
| 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_nameValue
character_set_clientutf8mb4
character_set_resultsutf8mb4

更改为

Variable_nameValue
character_set_clientgbk
character_set_resultsgbk

这样才能将字符串完整的插入到数据库当中,避免由于编码格式不匹配而出现乱码的情况。
修改方式:

set character_set_client=gbk;   告诉我客户端这边的文字编码
set character_set_results=gbk;  告诉mysql希望返回的结果集编码;
实验中发现只要客户端是gbk编码的,只要设置这个就可以解决乱码这个问题。

还有另外一个好用的命令可以同时达到上面两条指令的效果:

set charset gbk;  和上面两个效果一致。

说明

此次更改仅仅是更改当前命令行窗口的编码格式和输出编码格式,不会影响输出和显示。当重新打开一个cmd命令行时,将重新恢复成utf8的编码格式。——特别注意

总结

以上是我遇到的mysql编码问题,并不代表可以解决到所有问题,但希望可以帮到大家,避免入坑。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值