您好!欢迎访问家园网-www.jy.wang!

家园网

MySQL的set names命令详解

网络 作者:本站 点击:

执行下面的命令:

mysql> set names charset_name;


相当于执行了下面三条命令语句:

mysql> SET character_set_client = charset_name;
mysql> SET character_set_results = charset_name;
mysql> SET character_set_connection = charset_name;


所以 set names 是设置上面三个内置系统变量的快捷键命令。

官方文档的解释:

1.character_set_client 是指客户端发送过来的语句的编码;

2.character_set_connection 是指 mysqld 收到客户端的语句后,要转换到的编码;

3.character_set_results 是指 server 执行语句后,返回给客户端的数据的编码。

对人来说,能够理解的是各种各样的符号,而对计算机来说,只能理解二进制,二进制和符号之间的对应关系就是编码。不同地域国家都有自己的一套符号集合,每套符号集合都各自用一组二进制数字表示,从而形成了不同的编码方案,字符集其实就是二进制编码和符号的对应关系集合。

同一个二进制数在不同的字符集下可能对应不一样的字符,如在 GBK 字符集中,0xC4E3 对应的是“你”,而在 big5 字符集中对应的是“斕”,而“你”在 unicode 中的编码是 0x4F60,在 Collation-Charts 这个网站有字符集和编码对应关系图,可以非常直观地看到不同编码下二进制数和符号的对应关系。

set names 设置的三个系统变量就是设置 mysqld 和客户端通信时,mysqld 应该如何解码 client 发来的字符,以及如何编码返回给客户端的结果。

字符在 MySQL 中的编码转换流程如下:


75142bdc6ca9241eb1c614924c1c4256.png

标签: