diff --git a/src/corelib/serialization/qcborvalue_p.h b/src/corelib/serialization/qcborvalue_p.h index 5c8f244ad84..e23b9fccf98 100644 --- a/src/corelib/serialization/qcborvalue_p.h +++ b/src/corelib/serialization/qcborvalue_p.h @@ -116,6 +116,7 @@ struct ByteData QByteArray asByteArrayView() const { return QByteArray::fromRawData(byte(), len); } QLatin1String asLatin1() const { return QLatin1String(byte(), len); } + QUtf8StringView asUtf8StringView() const { return QUtf8StringView(byte(), len); } QStringView asStringView() const{ return QStringView(utf16(), len / 2); } QString asQStringRaw() const { return QString::fromRawData(utf16(), len / 2); } }; diff --git a/src/corelib/serialization/qjsonparser.cpp b/src/corelib/serialization/qjsonparser.cpp index 5dc2a309158..2514319e0e9 100644 --- a/src/corelib/serialization/qjsonparser.cpp +++ b/src/corelib/serialization/qjsonparser.cpp @@ -413,10 +413,7 @@ static void sortContainer(QCborContainerPrivate *container) if (bKey.flags & QtCbor::Element::StringIsUtf16) return QCborContainerPrivate::compareUtf8(aData, bData->asStringView()); - // We're missing an explicit UTF-8 to UTF-8 comparison in Qt, but - // UTF-8 to UTF-8 comparison retains simple byte ordering, so we'll - // abuse the Latin-1 comparison function. - return QtPrivate::compareStrings(aData->asLatin1(), bData->asLatin1()); + return QtPrivate::compareStrings(aData->asUtf8StringView(), bData->asUtf8StringView()); } };