unicode - 字节长度不能被 2 整除的 UTF-16 字符串是否总是无效?

标签 unicode utf-16

如果您有一个 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/

相关文章:

csv - 如何在 Golang 中解码 UTF-16BE CSV 文件

c++ - 从 UTF-8 到 UTF-16 Big endian 的字符串转换失败(使用 C、C++ 语言)

c++ - 在 C++ 中使用 utf8 库将 UTF 16 转换为 UTF8

perl - 当我不知道字节顺序时,如何在 Perl 中解码 UTF-16 数据?

javascript - 确定 JavaScript 字符串中的所有 ISO 15924 脚本代码

python - 如何在 python 中将 url 编码的字符串转换为正确的 unicode 字符串

sql - 0x8FFF 在 nvarchar 比较中有何意义?

Unicode 字节与代码点 (Python)

r - 如何在 Windows 下显示带有 Unicode 字符的消息/警告/错误?

c++ - C++ 字符串代码点和代码单元有什么好的解决方案吗?