c++ - 将 Unicode UTF-8 和 UTF-16 数据写入 QByteArray

标签 c++ qt encoding windows-xp utf

我正在使用 Qt 为我的公司开发协议(protocol)。需要查询Window Registry并将获得的值写入一个预先协商的socket。我已将注册表数据读入 QString。我必须使用 8 位 Unicode 字符和一些 16 位 Unicode 字符。在使用 QTcpSocket::write() 写入套接字之前,我使用 QByteArray 存储所有数据。必须遵循 Little Endianness。

  1. 如何从 QString 中获取 Unicode 8 位格式的数据到 QByteArray 中(规范说字符类型对应于 quint8 )?

  2. 如何从 QString 中获取 Unicode 16 位格式的数据到 QByteArray(规范说字符类型对应于 quint16 )?

  3. 如何在所有情况下都保持 Little Endianness?

(我没有处理 Unicode/可变字节编码数据的经验)

最佳答案

查看文档是一个好的开始。

  1. QString::toUtf8()
  2. 创建一个以 BOM 开头的新 QByteArray .使用 QString::utf16()要获得 ushort 值,请将您想要的字节序中的上半部分和下半部分屏蔽到 QByteArray 中。
  3. UTF-8 没有/不需要字节顺序。将 16 位值放入 8 位数组以实现小字节序所需的 ushort 掩码将是 0x00FF,然后是 0xFF00
  4. 阅读The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)今晚在家。

关于c++ - 将 Unicode UTF-8 和 UTF-16 数据写入 QByteArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11152695/

相关文章:

c++ - 通过 glTranslatef - OpenGL 在另一个位置重绘 gl_Quads

c++ - C++ 标准库上的 sizeof()

c++ - 刷新 QGraphicsScene/QGraphicsView

c - 如何将负十六进制转换为十进制

c++ - 使用 Visual C++ 6.0 的 Windows 服务

c++ - 我收到 2 个我无法解决的错误; 1 无效使用成员(你忘记了 '&' 吗?)和目标 'main.o' 的配方失败

c++ - 什么样的哈希函数可以从字符串中给出 32 位值?

c++ - 我需要实现自己的 QAbstractTableModel 吗?

csv - 解析csv文件时出现奇怪的输出

python - 使用 unicode 字符 u201c