Mysql字符集(3)--mysql从入门到精通(四)

2023-01-30 00:00:00 客户端 返回 字节 字符集 解码

上篇文章我们说了mysql客户端到服务端会不同的字符集不断转换,其中服务端有三个重点的系统变量,1.处理客户端发来的字节串:character_set_client。2.吧请求的字节串从character_Set_cliect转成character_set_connection。3.吧字节串返回给客户端:character_Set_result。

如果你的select * from table_A where name = ‘我的’;返回的结果显示编码报错怎么办呢?

把我们可以从字节集的流程开始分析,他可能在步character_Set_client转换的时候就出现乱码问题,比如我们客户端发送的字节串是utf8的,但服务器的character_Set_client不是,就会乱码。也有可能character_Set_result字符集和客户端读取的字符集不一致也会乱码。这时候可以用:

Show variables like ‘character_Set_resultes’;

查看是否是和客户端相同的字符集,需要注意的是,mac的客端默认字符集是utf8,windows默认gbk。

字节串在服务器里面相互解码编码不是很影响性能吗,答案是肯定的,所以mysql给了一个sql,吧这三个系统参数一起修改字符集:set names '字符集';也可以单个修改,sql如下。

mysql> set names 'utf8';
Query OK, 0 rows affected (0.00 sec)
 
mysql> set character_Set_Results = 'utf8';
Query OK, 0 rows affected (0.00 sec)

相关文章