是一个UTF-16字符串,其长度以字节为单位不能被2整除,总是无效的?

时间:2015-12-03 08:39:15

标签: unicode utf-16

如果您有一个UTF-16字符串,其长度以字节为例,例如21.是否可以立即说出该字符串中包含无效的UTF-16?我不是在这里的null终结符。我只是在计算实际的文本数据。我的理由是,在UTF-16中,文本元素被编码为1或2个双字节序列。

1 个答案:

答案 0 :(得分:1)

答案是是的,当然是。正如你所说,

  

UTF-16文本元素被编码为1或2个双字节序列。

一个双字节序列的一半总是无效的。

但要注意:你说你“不算这里的空终结者”。但是UTF-16中不能有单字节的空终止符,因为单个0x00字节可以是有效UTF-16字节对的最低有效字节。例如,名为“带有macron的拉丁大写字母A”的字符是Unicode U+0100,即UTF-16LE(小端)中的字节序列0x00 0x01或UTF中的0x01 0x00 16BE(大端)。