mysql模糊乱码_10分钟学会理解和解决MySQL乱码问题(1)

本文将详细介绍MySQL乱码的成因和具体的解决方案

在阅读本文之前,强烈建议对字符集编码概念还比较模糊的同学 阅读下博主之前对相关概念的一篇科普:十分钟搞清字符集和字符编码

MySQL出现乱码的原因

要了解为什么会出现乱码,我们就先要理解:从客户端发起请求,到MySQL存储数据,再到下次从表取回客户端的过程中,哪些环节会有编码/解码的行为。为了更好的解释这个过程,博主制作了两张流程图,分别对应存入和取出两个阶段。

存入MySQL经历的编码转换过程

75854028_1.jpg

上图中有3次编码/解码的过程(红色箭头)。三个红色箭头分别对应:客户端编码,MySQL Server解码,Client编码向表编码的转换。其中Terminal可以是一个Bash,一个web页面又或者是一个APP。本文中我们假定 Bash是我们的Terminal,即用户端的输入和展示界面。图中每一个框格对应的行为如下:

在terminal中使用输入法输入

terminal根据字符编码转换成二进制流

二进制流通过MySQL客户端传输到MySQL Server

Server通过character-set-client解码

判断character-set-client和目标表的charset是否一致

如果不一致则进行一次从client-charset到table-charset的一次字符编码转换

将转换后的字符编码二进制流存入文件中

从MySQL表中取出数据经历的编码转换过程

75854028_2.jpg

上图有3次编码/解码的过程(红色箭头)。上图中三个红色箭头分别对应:客户端解码展示,MySQL Server根据character-set-client编码,表编码向character-set-client编码的转换。

从文件读出二进制数据流

用表字符集编码进行解码

将数据转换为character-set-client的编码

使用character-set-client编码为二进制流

Server通过网络传输到远端client

client通过bash配置的字符编码展示查询结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值