JavaScript UTF-8 编码与解码131


什么是 UTF-8?

UTF-8(Unicode Transformation Format – 8-bit)是一种 Unicode 转换格式,它将 Unicode 字符编码为一系列 8 位字节序列。UTF-8 是 Unicode 的标准编码,因为它具有以下优点:
向后兼容 ASCII:UTF-8 的前七位字节与 ASCII 字符集相同,这意味着所有 ASCII 字符都可以用一个字节表示。
可变长度编码:UTF-8 中的字符表示为可变长度的字节序列,其中较小的字符使用较短的序列,而较大的字符使用较长的序列。
兼容性:UTF-8 广泛用于 Web、电子邮件和其他文本传输协议中。

UTF-8 编码

UTF-8 编码算法根据 Unicode 字符的值将字符编码为字节序列。该算法如下:
如果 Unicode 字符值小于 128,则用一个字节表示,字节的最高位为 0,其余位包含字符值。
如果 Unicode 字符值在 128 到 2047 之间,则用两个字节表示,第一个字节的最高位为 110,第二个字节的最高位为 10,剩余位包含字符值。
如果 Unicode 字符值在 2048 到 65535 之间,则用三个字节表示,第一个字节的最高位为 1110,第二个和第三个字节的最高位为 10,剩余位包含字符值。

UTF-8 解码

UTF-8 解码算法将字节序列解码为 Unicode 字符。该算法如下:
如果第一个字节的最高位为 0,则该字节表示一个 ASCII 字符。
如果第一个字节的最高位为 110,则该字节表示一个两个字节的 UTF-8 序列,第二个字节的最高位必须为 10。
如果第一个字节的最高位为 1110,则该字节表示一个三个字节的 UTF-8 序列,第二个和第三个字节的最高位都必须为 10。

JavaScript 中的 UTF-8

JavaScript 提供了几个内置函数来处理 UTF-8 编码的字符串:
encodeURI() 和 decodeURI() 函数对 URL 组件进行 UTF-8 编码和解码。
encodeURIComponent() 和 decodeURIComponent() 函数对 URL 组件中的特定字符进行 UTF-8 编码和解码。
btoa() 和 atob() 函数将字符串转换为 Base64 编码和解码,Base64 编码是 UTF-8 的变体。

示例
// 编码一个 UTF-8 字符串
const encodedString = encodeURI("你好,世界!");
// 解码一个 UTF-8 编码的字符串
const decodedString = decodeURI(encodedString);


UTF-8 是一种高效且广泛使用的 Unicode 编码,它可以在 JavaScript 中轻松处理。理解 UTF-8 编码和解码对于处理多语言文本和传输 Unicode 字符至关重要。

2024-12-22


上一篇:JavaScript 换行符:类型、比较和实用场景

下一篇:JavaScript 类的定义:全面指南