UTF-16

一种使用 16 位编码单元的 Unicode 编码方式,被 JavaScript、Java 和 Windows 内部使用。

UTF-16 是一种使用 16 位 (2 字节) 编码单元表示 Unicode 字符的编码方式。基本多语言平面 (BMP) 中的字符使用 2 个字节,BMP 之外的字符使用代理对 (4 个字节)。

JavaScript 字符串在内部以 UTF-16 表示。因此 String.length 返回的是 UTF-16 编码单元的数量,表情符号等 BMP 之外的字符会被计为 2。JavaScript 字符串处理书籍详细解释了这些细节。

UTF-16 有两种字节序:大端序 (UTF-16BE) 和小端序 (UTF-16LE)。文件开头的 BOM (字节顺序标记) 用于标识使用的字节序。

虽然 UTF-8 是 Web 标准,但 Windows 内部 API、.NET 和 Java 使用 UTF-16。编程与字符编码书籍讨论了 UTF-16 和 UTF-8 的使用场景。