UTF-16

Encoding & Standards

每字符使用2或4个字节的可变长度Unicode编码方式,被JavaScript、Java和Windows内部使用。

UTF-16 uses 16-bit code units. Characters in the Basic Multilingual Plane (U+0000 to U+FFFF) use one code unit (2 bytes). Characters above U+FFFF — including most emoji — require a surrogate pair (4 bytes).

This is why JavaScript's `string.length` can be surprising with emoji: `'😀'.length` returns 2 (two UTF-16 code units), not 1. Developers must use spread syntax (`[...'😀'].length`) or `Array.from()` for correct counting.

UTF-16 exists in two byte orders: UTF-16LE (little-endian, used by Windows) and UTF-16BE (big-endian). A BOM character can indicate which is used.

相关术语

BOM(字节顺序标记) (BOM) BOM(字节顺序标记) (BOM)
放置在文本文件开头的字符(U+FEFF),用于指示UTF-16/UTF-32编码中的字节顺序(字节序)。
UTF-32 UTF-32
每字符固定使用4个字节的Unicode编码方式,可直接映射到码位,但存储效率较低。
UTF-8 UTF-8
每字符使用1至4个字节的可变长度Unicode编码方式,是互联网上最主流的编码,被98%以上的网站采用。
代理对 代理对
用于表示U+FFFF以上字符的两个UTF-16编码单元组合,由高代理(U+D800-U+DBFF)和低代理(U+DC00-U+DFFF)构成。
编码单元 编码单元
用于编码字符的最小位组合:UTF-8为8位,UTF-16为16位,UTF-32为32位。
补充多文种平面(SMP) (SMP) 补充多文种平面(SMP) (SMP)
Unicode第1平面(U+10000至U+1FFFF),绝大多数表情符号码位都分配在此区域。

相关工具

🔢 Unicode 查询 Unicode 查询
输入 U+1F600 等码位,获取表情符号、编码详情、UTF-8/16 字节和 HTML 实体。