我有一个包含一系列字符的字节数组。在一种情况下,我有
[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/