MySQL字符集相关概念,以及应用,查看系统保存的三种关系处理字符集

MySQL字符集相关概念

字符编码概念

字符(Character)是各种文字和符号的总称,包括各种国家文字,标点符号,图形符号,数字等。
在计算机当中所看到的任何内容都是字符构成的。
字符编码(Character code)是计算机针对各种符号,在计算机中的一种二进制存储代号。

字符集

字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集都包含的字符个数不同。
常见字符集名称:ASCII字符集GB2312字符集,BIG5字符集、GB18030字符集、Unicode字符集等。
计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能狗识别和存储各种文字。
中文文字字数数目大,而且还分为简体中文和繁体中文两种不同书写规则的文字,而且计算机最初是按照英文单词字节字符设计的,因此,对中文字符进行编码,是中文信息交流的技术基础。

设置客户端所有字符集

如果直接通过cmd下的mysql.exe进行中文数据的插入,那么可能会出错

-- 插入中文数据   会报错
insert into my_teacher values("张三",34);

在这里插入图片描述
这里出错原因:
1、用户是通过mysql.exe来操作mysqld.exe
2、真正的sql执行的是mysqld.exe来执行sql指令
3、mysql.exe将数据传入mysqld.exe的时候没有告知其对应的符号规则(字符集),而mysqld也没有能力自己判断,就会使用自己(默认的字符集)

解决方案:mysql.exe客户端在进行数据操作之前将自己所使用的字符集告诉mysqld.exe
cmd下的mysql.exe默认都只有一个字符集:GBK
在这里插入图片描述
mysql.exe如何告知mysql.exe对应的字符集类型为GBK?
快捷方式:set names 字符集

-- mysql.exe告知我们的mysqld.exe自己的字符集的规则
set names gbk;

在这里插入图片描述
重新进行数据插入:中文(GBK)
在这里插入图片描述
深层原理:客户端,服务器,连接层(show variables like 'character_set_%'
mysql.exe与mysqld.exe之间的处理关系一共分为三层

客户端传入数据给服务端:client:character_set_client;
服务端返回数据给客户端:server:character_set_results;
客户端与服务端之间的连接:conection:character_set_connection;

set names 字符集;的本质就是:一次打通三层关系的字符集,变得一致
在系统当中有三个变量来记录着这三个变量记录的字符集:show variables like 'character_set_%'

-- 查看系统保存的三种关系处理字符集
show variables like 'character_set%';

在这里插入图片描述
查看一个新的客户端的对应的字符集关系
在这里插入图片描述
修改客户端给服务器端变量的字符集设置

set 变量名 = 值;
-- 修改变量set character_set_client = gbk;

在这里插入图片描述
再次查看修改过后值

show variables like 'character_set%';

重新进入数据插入和查看的结果:插入OK,但是查看乱码。
在这里插入图片描述
修改结构字符集为gbk

set character_set_results = gbk;

在这里插入图片描述
注意上面的connection只是为了更方便客户端与服务端进行字符集转换而设置的
set names gbk;等价于这几件事情

set character_set_client = gbk;  --为了让服务器识别客户端传回来的数据
set character_set_connection = gbk;//更好的帮助客户端与服务端之间字符集的转换
set character_set_results = gbk; --为了告诉客户端服务端所返回的数据字符集
发布了26 篇原创文章 · 获赞 23 · 访问量 1976

猜你喜欢

转载自blog.csdn.net/qq_44757034/article/details/104563666
今日推荐