解析UTF-16流并从编码错误中恢复

时间:2016-01-24 08:57:57

标签: unicode utf-16

我正在实现一个简单的行/列计数算法,用于计算UTF-16流中的“字形”。像往常一样,处理错误是棘手的部分。

E.g。如何在新行之后处理低代理组合字符

标准如何建议处理此问题?中止解析?尝试重新同步?如果是这样,怎么样?

我知道一个可能的答案是“RTFM”,但考虑到标准的庞大规模,这项任务有点令人生畏。

1 个答案:

答案 0 :(得分:1)

如果您的代理人数较少且没有相应的高代理人,则您的UTF-16序列无效。标准并没有强制要求特定的错误处理策略,但是您可以选择忽略它,中止解析,或者用U+FFFD替换它(替换字符) - 对您的应用程序有意义(见Section 2.7的最后一段。如果您忽略它,rules GB4 and GB5将捕获一个迷路代理。

杂散组合标记完全有效,不需要任何特殊处理。它们将被rule GB9捕获。