gpt4 book ai didi

string - 检查字节序列是否包含utf-16

转载 作者:行者123 更新时间:2023-12-02 09:31:40 25 4
gpt4 key购买 nike

我正在从流中读取字节序列。为了便于论证,假设序列具有固定长度,并且我将整个序列读入字节数组(在我的例子中是 vector<char> 但这对于这个问题并不重要)。该字节序列包含一个字符串,该字符串可以采用 utf-16 或 utf-8 编码。不幸的是,没有迹象表明它是哪一个。

我可以验证字节序列是否表示有效的 utf-16 编码以及是否表示有效的 utf-8 编码,但我还可以想象相同的字节序列如何可能是有效的 utf-8 和有效的 utf-8 编码。同时使用 utf-16。

那么,这是否意味着无法从总体上判断它是哪一个?

最佳答案

如果内容预计以使用拉丁脚本的语言编写,则只需计算空值即可检测到 UTF-16。在UTF-8中,空字节将解码为NUL控制字符,并且它们通常不会出现在文本中。

用其他脚本编写的语言不能在 UTF-16 和 UTF-8 中完全有效,除非是人为构造的。

因此,首先检测它本身是否是完全有效的 UTF-8 序列:

  • 如果是,检查是否有空字节,如果有,则为 UTF-16。否则就是 UTF-8。
  • 如果不是,则为 UTF-16。

如果上面的结果是 UTF-16,那还不够,因为您还必须知道字节顺序。对于用拉丁脚本编写的语言,奇数或偶数空字节的数量可以说明这一点。

关于string - 检查字节序列是否包含utf-16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14196386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com