c++ - 解析字节数组中的 Unicode

标签 c++ arrays unicode

我有一个包含一系列字符的字节数组。在一种情况下,我有

[28] = 0x6e
[29] = 0x61
[30] = 0x6d
[31] = 0x65
[32] = 0x00
[33] = 0x00
[34] = 0x00
[35] = 0x4f
[36] = 0x08
[37] = 0x00
[38] = 0x07
[39] = 0x00
[40] = 0x00
[41] = 0x04
[42] = 0x13
[43] = 0xff
[44] = 0xff
[45] = 0x00
[46] = 0x00

28 到 31 有字符“name”,该部分以元素 32 结尾。然后我有另一个字节数组:

[47] = 0x01
[48] = 0x03
[49] = 0x00
[50] = 0x00
[51] = 0x73
[52] = 0x65
[53] = 0xc3
[54] = 0xb1
[55] = 0x6f
[56] = 0x72
[57] = 0x00
[58] = 0x00
[59] = 0x00
[60] = 0x4f
[61] = 0x08
[62] = 0x00
[63] = 0x08
[64] = 0x00
[65] = 0x00
[66] = 0x04
[67] = 0x13
[68] = 0xff
[69] = 0xff
[70] = 0x00
[71] = 0x00

我相信我有字符串 señor .

对于第一个数组,很容易找到前 4 个字节的名称 00作为终止符,但我如何破译第二个字节数组中的内容?

两个数组都是vector<char>

最佳答案

文本显然使用了UTF-8编码:

[53] = 0xc3
[54] = 0xb1

这是 UTF-8 encoded ñ 字符。周围的字符是 señor 中剩余的四个字符。

C++ 库确实有一些用于 working with UTF-8 的工具;但我总是发现那些库类有些笨拙和不灵活。在大多数平台上,您都拥有出色、灵活的 iconv library使用简单易用的 API 在 UTF-8 和其他编码之间进行转换。

关于c++ - 解析字节数组中的 Unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41248473/

相关文章:

c++ - VS2017 C++ : Howto supress warnings after "Generating Code..."

c++ - 调试嵌套 for 循环的正常方法是什么?

javascript - 2个键值对象js之间的数学差异

c++ - 运行存储在 `std::wstring` 中的控制台命令

java - 使用默认语言环境的 String.toLowerCase() 的用途?

c++ - 如果有人请求删除一个不存在的元素,我应该抛出什么?

c++ - 当 VBA 运行声明的函数但 C++ 控制台应用程序运行正常时堆损坏?

c - 为什么不能将 c 指针视为数组?

Java - 将带有列表变量的对象转换为对象列表

java - Grails/Spring 集成应用程序中出现意外的 Unicode 转换