0

我需要一些帮助来理解格式良好的 UTF-16 字符串的概念,如第 2 章的这两段所述:通用结构 2.7 Unicode 字符串

“根据编程环境,Unicode 字符串可能需要也可能不需要采用相应的 Unicode 编码形式。例如,Java、C# 或 ECMAScript 中的字符串是 Unicode 16 位字符串,但不一定格式正确UTF-16 序列。在正常处理中,允许此类字符串包含格式不正确的 UTF-16 的代码单元序列(即孤立的代理)会更有效。因为字符串是每个程序的基本组成部分,在修改字符串的每个操作中检查孤立的代理可能会产生巨大的开销,特别是因为补充字符在全球程序中占整个文本的百分比极为罕见。

每当此类字符串被指定为特定的 Unicode 编码形式时——即使是具有相同代码单元大小的字符串——该字符串不得违反该编码形式的要求。例如,当字符串被指定为格式正确的 UTF-16 时,不允许在 Unicode 16 位字符串中使用孤立的代理

4

1 回答 1

3

该段落对 UTF-16 进行了解释;格式不正确意味着字符串包含孤立的代理代码单元。

也就是说,某些代码单元仅在它们成对出现时才有效。[0xD800-0xDFFF] 范围内的代码单元只能成对出现,其中第一个必须在 [0xD800-0xDBFF] 范围内,第二个必须在 [0xDC00-0xDFFF] 范围内。如果一个字符串不符合这个要求,那么它就不是格式良好的。

于 2012-12-03T19:02:10.350 回答