MySQL字符集

文章目录

  • 字符集和比较规则
    • 3.1字符集和比较规则简介
      • 3.1.1字符集简介
      • 3.1.2比较规则简介
      • 3.1.3 一些重要的字符集
    • Mysql中支持的字符集和比较规则
    • 3.2.1 MySQL中的utf8和utfmb4
    • 3.2.2 查看字符集和比较规则

字符集和比较规则

3.1字符集和比较规则简介

3.1.1字符集简介

计算机中所有字符都是以二进制进行存储,所以重点是二进制与字符的对应关系是什么样的。需要弄清楚以下两件事:

  • 要把哪些字符映射成二进制? 也就是界定字符范围。
  • 怎么映射? 将字符映射成二进制数据的过程叫做编码,二进制映射为字符的过程叫解码。

字符集用来描述字符范围 及 其编码规则。

3.1.2比较规则简介

在计算机中,很多场景需要对字符进行比较,所以对于字符集中两个不同的字符,如何比较其大小非常重要。

一种简单且直接的规则是两个字符谁的二进制大,则该字符就大,称为二进制比较规则。

英文中,有些场景是不区分大小写,此时就没法使用二进制比较规则了。可以先将字符转为大写或小写,然后再比较这两个字符的二进制数据。

对于一种字符集,可以制定多种比较规则。

3.1.3 一些重要的字符集

  • ASCII 字符集

    收录128个字符,包括空格、标点符号、数字、大小写字母和一些不可见字符,可以使用一个字节编码。

  • ISO 8859-1字符集(别名Latin1)

    收录256个字符,在ASCII基础上又扩充了128个西欧常用字符(包括德法两国的字母)。该字符集也可以使用一个字节来进行编码。

  • GB2312字符集

    收录汉字6763个,收录其他文字符号682个。该字符集同时兼容ASCII字符集,所以在编码方式上显得奇怪:若是ASCII字符则采用一字节编码;否则采用二字节编码。由中国国家标准总局1980年发布。

  • GBK字符集

    该字符集只是在收录的范围上对GB2312字符集进行了扩充,编码方式兼容GB2312字符集。中华人民共和国全国信息技术标准化技术委员会1995年12月1日制订。

  • UTF-8字符集

    几乎收录了当今世界各个国家/地区使用的字符,而且还在不断补充。兼容ASCII字符集,采用边长编码方式,编码一个字符时使用1~4字节。

UTF-8只是Unicode字符集的一种编码方案,Unocode字符集可以采用UTF-8、UTF-16、UTF-32这集中编码方案。UTF-8使用1~4字节编码,UTF-16使用2或4个字节编码,UTF-32使用4字节编码。

补充: UTF-8/UTF-16/UTF-32 三种编码方式的联系与区别。Unicode 与 utf8 utf16 utf32的关系

Mysql中支持的字符集和比较规则

3.2.1 MySQL中的utf8和utfmb4

  • utf8mb4: 正宗的UTF-8字符集,使用1~4字节编码。
  • utf8mb3: “阉割”的UTF-8字符集,只使用1~3字节编码,在MySQL中,utf8utf8mb3的别名,常用的字符使用该字符集就足够了。

3.2.2 查看字符集和比较规则

# 查看字符集
show (character set|charset) [like 模式]
mysql> show character set like "utf_%";
+---------+------------------+--------------------+--------+
| Charset | Description      | Default collation  | Maxlen |
+---------+------------------+--------------------+--------+
| utf16   | UTF-16 Unicode   | utf16_general_ci   |      4 |
| utf16le | UTF-16LE Unicode | utf16le_general_ci |      4 |
| utf32   | UTF-32 Unicode   | utf32_general_ci   |      4 |
| utf8    | UTF-8 Unicode    | utf8_general_ci    |      3 |
| utf8mb4 | UTF-8 Unicode    | utf8mb4_0900_ai_ci |      4 |
+---------+------------------+--------------------+--------+
5 rows in set (0.00 sec)

mysql>


参考资料: 《MySQL是怎样运行的——从根上理解MySQL》

你可能感兴趣的:(MySQL,mysql)