什么是字符集_mysql字符编码概念

11次阅读

字符集是字符与编码规则的统一定义,规定字符的二进制表示方式;mysql中utf8mb4为推荐默认字符集,支持1–4字节,兼容中文、emoji及所有语言,需配合校对规则实现存储与比较功能。

什么是字符集_mysql字符编码概念

字符集(Character Set)在 MySQL 中,指的是“字符 + 编码规则”的统一定义。它规定了哪些字符可以被使用,以及每个字符对应怎样的二进制表示方式——也就是怎么把一个汉字、英文字母、数字或 emoji(比如 ?)存成字节数据。

字符集本质是映射关系

计算机只认 0 和 1,所有文字必须转成字节才能存储。字符集就是这张“翻译表”:

  • “中” 在 GBK 中是 0xD6D0(2 字节)
  • “中” 在 UTF8MB4 中是 0xE4B8AD(3 字节)
  • “?” 在 UTF8MB4 中是 4 字节(0xF09F9880),而老式 utf8(即 utf8mb3)根本存不了

MySQL 常见字符集对比

不同字符集覆盖范围和编码长度不同,直接影响中文、emoji、多语言支持能力:

  • latin1:单字节,仅支持西欧字符,不支持中文
  • gbk / gb2312:中文友好,但仅限简体中文和部分符号,不支持 emoji 和繁体/日韩文
  • utf8mb3(MySQL 中叫 utf8):最多 3 字节,能存大部分 Unicode 字符,但 跳过四字节字符(如 emoji、部分生僻汉字)
  • utf8mb4:完整 UTF-8 实现,1–4 字节,推荐作为默认字符集,兼容中文、emoji、所有语言

字符集不是孤立存在的

它总是和 校对规则(Collation) 配套使用:

  • 字符集管“怎么存”(编码)
  • 校对规则管“怎么比”(排序、大小写是否敏感、中文按拼音还是 Unicode 码点排)
  • 例如:utf8mb4_unicode_ci 表示用 utf8mb4 编码,按 Unicode 标准比较且不区分大小写

设置层级影响实际行为

MySQL 支持多级字符集设定,低层级会继承高层级默认值,但可被覆盖:

  • 服务器级(character_set_server)→ 新建库默认用它
  • 数据库级(CREATE database ... CHARACTER SET utf8mb4)→ 影响该库下所有新表
  • 表级、列级可进一步细化,比如某字段专门存大小写敏感密码,用 utf8mb4_bin
text=ZqhQzanResources