Исходя из исходного кода в src/corelibs/codecs/
, похоже, Qt использует порядок байтов хоста для UTF-16 и UTF-32.
Если вы используете QTextCodec
для чтения существующей строки Unicode, у которой есть спецификация, и вы явно не просили игнорировать заголовок, используется порядок байтов, обнаруженный в строке.
In * qutfcodec_p.h * и QUtf16Codec::e
, и QUtf32Codec::e
инициализируются значением DetectEndianness
(перечисление).
В qutfcodec.cpp , рядом с началом функций convertFromUnicode
и convertToUnicode
из классов QUtf16
и QUtf32
(используется QUtf16Codec
и QUtf32Codec
), вы можете найти строку:
endian = (QSysInfo::ByteOrder == QSysInfo::BigEndian)
? BigEndianness : LittleEndianness;