【发布时间】:2012-12-04 03:09:44
【问题描述】:
我需要一些帮助来理解格式良好的 UTF-16 字符串的概念,正如 Chapter 2: General Structure 2.7 Unicode String 的这两段中提到的:
"根据编程环境的不同,Unicode 字符串可能需要也可能不需要采用相应的 Unicode 编码形式。例如,Java、C# 或 ECMAScript 中的字符串是 Unicode 16 位字符串,但是不一定是格式良好的 UTF-16 序列。在正常处理中,允许此类字符串包含格式不正确的 UTF-16 的代码单元序列会更有效 ——也就是说,孤立的代理。因为字符串是每个程序的基本组成部分,所以在修改字符串的每个操作中检查孤立的代理可能会产生巨大的开销,特别是因为补充字符在全球程序中占整个文本的百分比是极其罕见的。
只要将此类字符串指定为特定的 Unicode 编码形式(即使是具有相同代码单元大小的字符串),该字符串也不得违反该编码形式的要求。例如,当 Unicode 16 位字符串被指定为格式正确的 UTF-16 时,不允许使用孤立的代理项。
【问题讨论】:
标签: unicode