中文数据问题
中文数据问题的本质就是字符集的问题。
由于计算机仅识别二进制数据,而且人类则更倾向于识别字符(符号),因此就需要一个二进制与字符的对应关系,也就是字符集。
在咱们通过 MySQL 数据库的客户端向服务器插入中文数据的时候,有可能失败,原因则可能是客户端和服务器的字符集设置不同导致的,例如:
- 客户端的字符集为
gbk
,则一个中文字符,对应两个字节; - 服务器的字符集为
utf8
,则一个中文字符,对应三个字节。
这样显然会在编码转换的过程中出现问题,从而导致插入中文数据失败。
由于所有的数据库服务器表现的一些特性都是通过服务器端的变量来保持的,因此系统会先读取自己的变量,看看具体的表现形式。这样的话,咱们就可以通过以下语句查看服务器到底识别哪些字符集:
-- 查看服务器识别的全部字符集
show character set;
通过以上查询,咱们会发现:服务器是万能的,其支持所有字符集。
既然服务器支持这么多字符集,总会有一种是服务器默认的和客户端打交道的字符集。因此,咱们可以通过以下语句查看服务器默认的对外处理的字符集:
-- 查看服务器默认的对外处理的字符集
show va