UTF-8 编码/解码工具

UTF-8 编码说明

UTF-8 简介

UTF-8(8-bit Unicode Transformation Format)是一种针对 Unicode 的可变长度字符编码,又称万国码。 由 Ken Thompson 于 1992 年创建,现已标准化为 RFC 3629。 UTF-8 使用 1 到 4 个字节编码 Unicode 字符(现代标准已限制为最多 4 字节), 可在同一页面显示中文、英文、日文、韩文等多种语言。

UTF-8 编码规则

若只有一个字节,则最高位为 0;若为多字节,首字节连续的 1 的个数表示总字节数,后续字节均以 10 开头。

UTF-8 编码对照表
Unicode 范围 位数 UTF-8 编码格式 字节数 备注
U+0000 ~ U+007F0~70xxx xxxx1
U+0080 ~ U+07FF8~11110x xxxx
10xx xxxx
2
U+0800 ~ U+FFFF12~161110 xxxx
10xx xxxx
10xx xxxx
3基本多文种平面
U+10000 ~ U+10FFFF17~211111 0xxx
10xx xxxx
10xx xxxx
10xx xxxx
4增补字符(RFC 3629 限定范围)

UTF-8 优点

  • 兼容 ASCII(U+0000–U+007F 与 ASCII 完全一致)
  • 无需字节序标记(BOM),字节序无关
  • 字符串比较与排序行为一致
  • 不会出现 0xFF0xFE,便于识别其他编码

UTF-8 缺点

  • 变长编码,无法通过字符数直接判断字节数
  • 非 ASCII 字符需多个字节,存储效率低于 Latin-1
  • 早期邮件系统(7-bit)可能过滤高位字节,催生 UTF-7