TextEncoder 将字符串转换成 UTF-8 Uint8Array,再分块组成可交给 btoa 的字节字符串。分块可以避免大数组展开时超出调用参数限制。解码则使用 atob 恢复字节,再用严格 TextDecoder 读取 UTF-8,并保留文本开头的 BOM。正常中文和完整代理对表示的字符可以往返;孤立的 Unicode 代理单位会被拒绝,防止编码过程悄悄替换成另一个字符而失去原文。
TextEncoder 将字符串转换成 UTF-8 Uint8Array,再分块组成可交给 btoa 的字节字符串。分块可以避免大数组展开时超出调用参数限制。解码则使用 atob 恢复字节,再用严格 TextDecoder 读取 UTF-8,并保留文本开头的 BOM。正常中文和完整代理对表示的字符可以往返;孤立的 Unicode 代理单位会被拒绝,防止编码过程悄悄替换成另一个字符而失去原文。