读完这篇MySQL编码的文章,以后再也不会为乱码烦恼了!

为什么出现乱码?当我们遇到一些问题的时候,首先要搞明白问题的根源是什么,才能更加高效准确的解决问题。关于MySQL编码的问题,我是困扰了很久,在一番努力下,今天我可以和自豪的讲,MySQL会乱码?对不起,我从没遇到过?可能还是我太年轻,太年轻。废话一番,我们开始步入正题。

一.为什么会乱码?
我想这个问题很简单,大家一定也都知道。那肯定是编码和解码使用的字符集不同导致的。如果我们使用utf-8编码,那么使用gbk解码,不乱码才怪。这是我们就想到如果我使用相同的字符集编码和解码,那肯定就不会乱码了。嗯嗯。聪明的你开始入门了。

二.怎么使用相同的字符集进行编码和解码?

首先我们使用 SHOW VARIABLES LIKE 'char%'; 查看MySQL数据库编码,可得到下图所示:

在这里插入图片描述
这里我们简单介绍一下 character_set_client、character_set_results

character_set_client: MySQL使用该编码来解读客户端发送过来的数据,例如该编码为 UTF8,那么如果客户端发送过来的数据不是UTF8,那么就会出现乱码。

character_set_results:MySQL会把数据转换成该编码后,再发送给客户端,例如该编码为UTF8,那么如果客户端不使用UTF8来解读,那么就会出现乱码。

在cmd下控制台乱码问题

  • 插入或修改时出现乱码:

    这时因为cmd下默认使用GBK,而character_set_client不是GBK的原因。我们只需让这两个编码相同即可。
    因为修改cmd的编码不方便,所以我们去设置character_set_client为GBK即可。

  • 查询出的数据为乱码:

    这是因为character_set_results不是GBK,而cmd默认使用GBK的原因。我们只需让这两个编码相同即可。
    因为修改cmd的编码不方便,所以我们去设置character_set_results为GBK即可。

三.解决方案

  • 方案一

设置变量的语句:
set character_set_client=gbk;
set character_set_results=gbk;
注意:设置变量只对当前连接有效,当退出窗口后,再次登录mysql,还需要再次设置变量。

  • 方案二

    通过修改配置文件my.ini
    default-character-set=gbk
    它可以修改三个变量:client、results、connection的字符集为gbk

在这里插入图片描述

注意:当我们修改完配置文件my.ini后,要先使用sql命令重启一下MySQL,让其重新加载一下配置文件。

关闭MySQL:net stop mysql
开启MySQL: net start mysql

再次打开MySQL,同样的做法,不同的结果。修改成功如下图:
使用sql语句查询字符集:show variables like 'char%';

在这里插入图片描述
四:验证(是骡是马出来溜溜)

修改前:那叫一个头疼啊!

在这里插入图片描述
修改后:那叫一个贼 6啊!

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值