我需要一些帮助来理解格式良好的 UTF-16 字符串的概念,如第 2 章的这两段所述:通用结构 2.7 Unicode 字符串:
“根据编程环境,Unicode 字符串可能需要也可能不需要采用相应的 Unicode 编码形式。例如,Java、C# 或 ECMAScript 中的字符串是 Unicode 16 位字符串,但不一定格式正确UTF-16 序列。在正常处理中,允许此类字符串包含格式不正确的 UTF-16 的代码单元序列(即孤立的代理)会更有效。因为字符串是每个程序的基本组成部分,在修改字符串的每个操作中检查孤立的代理可能会产生巨大的开销,特别是因为补充字符在全球程序中占整个文本的百分比极为罕见。
每当此类字符串被指定为特定的 Unicode 编码形式时——即使是具有相同代码单元大小的字符串——该字符串不得违反该编码形式的要求。例如,当字符串被指定为格式正确的 UTF-16 时,不允许在 Unicode 16 位字符串中使用孤立的代理。