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

ust*_*ion 1 c++ encoding qt windows-xp utf

我正在使用 Qt 为我的公司开发协议。需要查询窗口注册表并将获得的值写入预先协商的套接字中。我已将注册表数据读入QString. 我必须使用 8 位 Unicode 字符和一些 16 位 Unicode 字符。我正在QByteArray使用QTcpSocket::write(). 必须遵循小字节序。

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

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

  3. 我怎样才能在所有情况下保持 Little Endianness?

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

Sam*_*mer 5

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

  1. QString::toUtf8()
  2. 创建一个以BOM开头的新 QByteArray 。使用QString::utf16()获取 ushort 值,将所需的字节序的上半部分和下半部分屏蔽到 QByteArray 中。
  3. UTF-8 没有/需要字节序。把16位值成一个8位的阵列,用于小端序所需的USHORT掩模会0x00FF然后0xFF00
  4. 阅读《绝对最低要求》,每个软件开发人员今晚在家中绝对必须了解 Unicode 和字符集(没有任何借口!)