gpt4 book ai didi

qt - 在 Qt 中 QTextCodec::codecForName ("UTF-16") 和 codecForName ("UTF-32") 如何决定使用的字节顺序?

转载 作者:行者123 更新时间:2023-12-04 13:14:33 27 4
gpt4 key购买 nike

在 Qt 文档中,它指出(除其他外)支持以下 Unicode 字符串编码:

  • UTF-8
  • UTF-16
  • UTF-16BE
  • UTF-16LE
  • UTF-32
  • UTF-32BE
  • UTF-32LE

由于为 2 和 4 八位字节编码的 Unicode 列出了三种不同的编解码器,我想知道:这两种非字节序编解码器(“UTF-16”和“UTF-32”)如何决定使用哪种字节顺序?

最佳答案

基于 src/corelibs/codecs/ 中的源代码,Qt 似乎对 UTF-16 和 UTF-32 使用主机的字节顺序。

如果您使用 QTextCodec要读取具有 BOM 的现有 Unicode 字符串,并且您没有明确要求忽略 header ,则使用在字符串中检测到的字节顺序。

  • 在 *qutfcodec_p.h* 中 QUtf16Codec::eQUtf32Codec::e用值 DetectEndianness 初始化(枚举)。

  • qutfcodec.cpp 中,函数开头附近 convertFromUnicodeconvertToUnicode来自类(class)QUtf16QUtf32 (由 QUtf16CodecQUtf32Codec 使用),您可以找到以下行:

    endian = (QSysInfo::ByteOrder == QSysInfo::BigEndian) 
    ? BigEndianness : LittleEndianness;

关于qt - 在 Qt 中 QTextCodec::codecForName ("UTF-16") 和 codecForName ("UTF-32") 如何决定使用的字节顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7430060/

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