编码格式

特性UTF-8UTF-16UTF-32
基本单位8 位(1 字节)16 位(2 字节)32 位(4 字节)
字符字节数1 到 4 字节2 或 4 字节固定 4 字节
字节序无字节序问题(通常无 BOM)有字节序问题(UTF-16BE / UTF-16LE),通常有 BOM有字节序问题(UTF-32BE / UTF-32LE),通常有 BOM
空间效率对英文最节省,对中文也较节省对常用亚洲文字可能较节省最低效,除非全部是 4 字节字符
处理复杂性变长,处理逻辑相对复杂BMP 内字符固定,辅助平面变长,略复杂固定长度,处理最简单
主要应用Web、Linux/Unix、文件、网络传输Windows API、Java 内部、JavaScript极少用于存储/传输,主要用于内部处理

UTF-8

变长的 Unicode 字符编码,8 位(1 字节)为基本单位,一个字符可以占用 1 到 4 个字节。

UTF8mb3

MySQL 数据库中的一种 UTF-8 实现,它最多支持每个字符使用 3 个字节。

在 MySQL 5.5.3 版本之前,MySQL 内部实现的 utf8 字符集并没有完全遵循 Unicode 联盟定义的标准 UTF-8。

不支持:

  • 表情符号 (emoji)
  • 许多不常用的汉字和一些历史文字
  • 一些复杂的数学符号和特殊符号

UTF8mb4

MySQL 数据库中对完整 UTF-8 标准的实现。

UTF-16

变长的 Unicode 字符编码,16 位(2 字节)为基本单位,一个字符可以占用 2 个或 4 个字节。

UTF-32

固定长度的 Unicode 字符编码,每个字符都占用 32 位(4 字节)。

ISO 8859-1

占用一个字节,不支持汉字等其他字符。

GB2312(国标)

汉字占用2个字节,非汉字字符(如字母、数字、标点符号等)占用1个字节主要覆盖简体汉字,(对汉字支持不够全面)。

GBK(国标扩展)

兼容GB2312,所需字节数与GB2312一样,GB2312中的字符在GBK中有相同的编码,相对于GB2312添加了繁体字,生僻字,东亚其他文字的支持。

GB18030

基本覆盖了中国所有的汉字(包括少数民族文字)和常用字符需求。

最后更新于 2025年7月13日