如果您有一个 UTF-16 字符串,其字节长度例如为 21。可以立即确定该字符串中包含无效的 UTF-16 吗?我这里没有计算空终止符。我只是在计算实际的文本数据。我的推理是,在 UTF-16 中,文本元素被编码为 1 或 2 个两字节序列。
最佳答案
答案是当然可以。正如你所说,
UTF-16 text elements are encoded as 1 or 2 two-byte sequences.
两字节序列的一半始终无效。
但要注意:你说你“没有算入这里的空终止符”。但 UTF-16 中不能存在单字节空终止符,因为单个 0x00
字节可能是有效 UTF-16 字节对中的最低有效字节。例如,字符 Ā,称为“带长宏的拉丁大写字母 A”,是 Unicode U+0100
,即 UTF-16LE(小端)中的字节序列 0x00 0x01
或 UTF-16BE(大端)格式的 0x01 0x00
。
关于unicode - 字节长度不能被 2 整除的 UTF-16 字符串是否总是无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34061258/