什么是结构良好的UTF-16字符串?

时间:2012-12-03 18:57:16

标签: unicode

我需要一些帮助来理解在Chapter 2: General Structure 2.7 Unicode String这两段中提到的格式良好的UTF-16字符串的概念:

“根据编程环境,Unicode字符串可能需要也可能不需要采用相应的Unicode编码形式。例如,Java,C#或ECMAScript中的字符串是Unicode 16位字符串,但是不一定是格式良好的UTF-16序列。在正常处理中,允许这些字符串包含格式不正确的代码单元序列UTF-16 会更有效率 - 也就是说,隔离的代理。因为字符串是每个程序的基本组成部分,所以在每个修改字符串的操作中检查隔离的代理可能会产生很大的开销,特别是因为补充字符在全世界程序中作为整体文本的百分比非常罕见。

每当指定此类字符串采用特定的Unicode编码形式时 - 即使是具有相同代码单元大小的字符串 - 该字符串也不得违反该编码形式的要求。例如,当指定格式良好的UTF-16 时,不允许使用Unicode 16位字符串中的隔离代理项。

1 个答案:

答案 0 :(得分:2)

该段解释了UTF-16;格式不正确意味着字符串包含隔离的代理代码单元。

也就是说,某些代码单元只有在成对出现时才有效。 [0xD800-0xDFFF]范围内的代码单元必须成对出现,其中第一个必须在[0xD800-0xDBFF]范围内,第二个必须在[0xDC00-0xDFFF]范围内。如果字符串不符合此要求,则表示格式不正确。