mysql操作 (四) 之SQL 中文数据问题

SQL 里中文数据问题的本质是字符集问题。计算机只能识别二进制,人类更多的是识别符号;需要有一个二进制与字符的对应关系(字符集)...
中文数据问题
中文数据问题的本质是字符集问题。
计算机只能识别二进制,人类更多的是识别符号;需要有一个二进制与字符的对应关系(字符集);
客户端向服务器插入中文数据没有成功。
--插入中文数据
insert into my_student values(5,'ddd','张越','猫'); // 报错
原因:\xD5\xD5\xD4\xBD 代表的是“张越”在当前编码(字符集)下对应的二进制编码转换成的十六进制:两个汉字 =》 四个字节(GBK)
报错:服务器没有识别对应的四个字节:服务器认为数据是UTF8,一个汉字有三个字节;读取三个字节转换成汉字(失败),剩余的再读三个字节(不够);最终失败。
所有的数据库服务器认为(表现)的一些特性都是通过服务器端的变量来保存;系统先读取自己的变量,看看应该怎么表现。
// 查看服务器到底识别哪些字符集
-- 查看所有字符集
show character set;
基本上:服务器是万能的,什么字符集都支持。
// 既然服务器识别这么多,总有一种是服务器默认与客户端打交道的字符集
-- 查看服务器默认的对外处理的字符集
show variables like 'character_set%';
问题根源:客户端数据只能是GBK,而服务器认为是UTF8;矛盾产出。
解决方案:改变服务器,默认的接受字符集为GBK;
-- 修改服务器认为的客户端数据的字符集为GBK
set character_set_client = gbk;