我正在实现一个简单的行/列计数算法,用于计算UTF-16流中的“字形”。像往常一样,处理错误是棘手的部分。
E.g。如何在新行之后处理低代理或组合字符?
标准如何建议处理此问题?中止解析?尝试重新同步?如果是这样,怎么样?
我知道一个可能的答案是“RTFM”,但考虑到标准的庞大规模,这项任务有点令人生畏。
答案 0 :(得分:1)
如果您的代理人数较少且没有相应的高代理人,则您的UTF-16序列无效。标准并没有强制要求特定的错误处理策略,但是您可以选择忽略它,中止解析,或者用U+FFFD
替换它(替换字符) - 对您的应用程序有意义(见Section 2.7的最后一段。如果您忽略它,rules GB4 and GB5将捕获一个迷路代理。
杂散组合标记完全有效,不需要任何特殊处理。它们将被rule GB9捕获。