Mysql字符集(1)--mysql从入门到精通(二)
上篇文章我们说了mysql客户端与服务端连接过程,分为tcp/ip连接,之后读取缓存,sql解码,语句优化,存储引擎:
我们都知道计算机只能存储二进制数据,那么怎么存储字符串呢?答案就是建立二进制与字符串的映射关系,这要清楚字符串的范围‘a’到‘z’;‘A’到’Z’,将字符串映射成二进制的过程叫编码,将二进制映射成字符串的过程叫解码。
Mysql中的utf8和utf8mb4字符集
上面常说的utf8字符集一个字符需要1~4个字节,但我们常用的1~3个字节就可以了,mysql中有两个定义:
- utf8mb3:阉割过得utf8字符集,1~3个字节。
- utf8mb4:使用的1~4个字节。
注意:mysql中utf8默认就是utf8mb3用的1~3个字节,如果需要四个字节,如emoji表情,,用utf8mb4字符集。
Utf8字符集:收录所有字符,而且在不断扩充,兼容ASCII字符集,采用长编码方式,编码一个字符需要1~4个字节。
ASCII字符集:共收录128个字符,包括空号,标点符号,数字,小小写字母和不可见字符等,采用一个字节进行编码。
ISO 8859-1字符集:收录256个字符,在ASCII字符集上扩充,也使用一个字节进行编码,字节别名latin1。
GB2312字符集:兼容ASCII字符集,如果该字符集在ASCII字符集中,则采用1字节编码,否则为2字节编码。
GBK字符集:在GB2312字符集上进行扩容。
一、服务器级别
服务器级别的字符集查看'character_set_database';和服务器比较规则查看'collation_server';
用mysql命令进入服务器,mysql -u root -p
mysql> SHOW VARIABLES LIKE 'character_set_database';
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| character_set_database | latin1 |
+------------------------+--------+
1 row in set (0.00 sec)
mysql> SHOW VARIABLES LIKE 'collation_server';
+------------------+-------------------+
| Variable_name | Value |
+------------------+-------------------+
| collation_server | latin1_swedish_ci |
+------------------+-------------------+
1 row in set (0.01 sec)
相关文章