在Qt文檔它指出(除了別的以外)以下Unicode字符串編碼被支持:在Qt QTextCodec :: codecForName(「UTF-16」)和codecForName(「UTF-32」)如何決定使用的字節順序?
- UTF-8
- UTF-16
- UTF-16BE
- UTF-16LE
- UTF-32
- UTF-32BE
- UTF-32LE
由於對2和4個八位字節列出的三種不同編解碼器編碼的Unicode,我想知道:如何做兩個非端的編解碼器(「UTF-16」和「UTF-32」)決定哪些字節序使用?
在Qt文檔它指出(除了別的以外)以下Unicode字符串編碼被支持:在Qt QTextCodec :: codecForName(「UTF-16」)和codecForName(「UTF-32」)如何決定使用的字節順序?
由於對2和4個八位字節列出的三種不同編解碼器編碼的Unicode,我想知道:如何做兩個非端的編解碼器(「UTF-16」和「UTF-32」)決定哪些字節序使用?
基於在src/corelibs/codecs/
的源代碼,它似乎Qt使用的主機,UTF-16和UTF-32的字節順序。
如果您使用QTextCodec
來讀取具有BOM的現有Unicode字符串,並且您沒有明確要求忽略頭,則會使用字符串中檢測到的字節順序。
在* qutfcodec_p.h *兩者QUtf16Codec::e
和QUtf32Codec::e
被初始化爲值DetectEndianness
(枚舉)。
在qutfcodec.cpp,附近的職能從QUtf16
和QUtf32
(使用QUtf16Codec
和QUtf32Codec
)類convertFromUnicode
和convertToUnicode
開始的時候,你可以找到行:
endian = (QSysInfo::ByteOrder == QSysInfo::BigEndian)
? BigEndianness : LittleEndianness;