mysql字符集

sofast 2020-01-30

先了解几个定义

1、计算机只能存储二进制数据,要想在计算机上保存二进制的数据,就要有对应的字符和二进制的映射。

2、将一个字符映射成一个二进制的数据较编码,返回来叫解码。

3、这时候会产生一些字符集,字符集:描述某个字符范围的编码规则。

下面我们自定义一个字符集(我们假想有这样的一个)

字符集名称:utf-ab;

字符只有: ‘a‘   ‘b‘ ;

编码规则:‘a‘ -> 00000001 (十六进制:0x01)

                  ‘b‘ -> 00000010 (十六进制:0x02)

那么根据我们自定义的这个字符集的编码规则   ‘ab‘字符串就用 0000000100000010 来表示了。

下面说一些重要的字符集:

ASCII字符集:共收录128个字符,包括空格、标点符号、数字、大小写字母和一些不可见字符。由于总共才128个字符,所以可以使用1个字节来进行编码;

ISO 8859-1字符集:共收录256个字符,是在ASCII字符集的基础上又扩充了128个西欧常用字符(包括德法两国的字母),也可以使用1个字节来进行编码;

GB2312字符集:收录了汉字以及拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母。其中收录汉字6763个,其他文字符号682个。同时这种字符集又兼容ASCII字符集;

GBK字符集:GBK字符集只是在收录字符范围上对GB2312字符集作了扩充,编码方式上兼容GB2312 ;

utf8字符集:收录地球上能想到的所有字符,而且还在不断扩充。这种字符集兼容ASCII字符集,采用变长编码方式,编码一个字符需要使用1~4个字节;

说一下mysql中的utf-8和utf-8mb4

utf-8(utf-8mb3):使用1~3个字节来表示一个字符;

utf-8mb4:1~4字节,

常用的一些字符用1-3字节就够用了,比如要保存emoji表情,那么选用4字节。

我们登录mysql后

show charset;命令可以查看支持的字符集。

mysql> show charset
-> ;
+----------+-----------------------------+---------------------+--------+
| Charset | Description | Default collation | Maxlen |
+----------+-----------------------------+---------------------+--------+
| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 |
| dec8 | DEC West European | dec8_swedish_ci | 1 |
| cp850 | DOS West European | cp850_general_ci | 1 |
| hp8 | HP West European | hp8_english_ci | 1 |
| koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 |
| latin1 | cp1252 West European | latin1_swedish_ci | 1 |
| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |
| swe7 | 7bit Swedish | swe7_swedish_ci | 1 |
| ascii | US ASCII | ascii_general_ci | 1 |
| ujis | EUC-JP Japanese | ujis_japanese_ci | 3 |

相关推荐