diff --git a/src/corelib/text/qstringconverter.cpp b/src/corelib/text/qstringconverter.cpp index 30da0add8f6..511f2d7810e 100644 --- a/src/corelib/text/qstringconverter.cpp +++ b/src/corelib/text/qstringconverter.cpp @@ -1067,26 +1067,6 @@ QChar *QUtf32::convertToUnicode(QChar *out, const char *chars, qsizetype len, QS return out; } -QString qFromUtfEncoded(const QByteArray &ba) -{ - const qsizetype arraySize = ba.size(); - const uchar *buf = reinterpret_cast(ba.constData()); - const uint bom = 0xfeff; - - if (arraySize > 3) { - uint uc = qFromUnaligned(buf); - if (uc == qToBigEndian(bom) || uc == qToLittleEndian(bom)) - return QUtf32::convertToUnicode(ba.constData(), ba.length(), nullptr); // utf-32 - } - - if (arraySize > 1) { - ushort uc = qFromUnaligned(buf); - if (uc == qToBigEndian(ushort(bom)) || qToLittleEndian(ushort(bom))) - return QUtf16::convertToUnicode(ba.constData(), ba.length(), nullptr); // utf-16 - } - return QUtf8::convertToUnicode(ba.constData(), ba.length()); -} - #if defined(Q_OS_WIN) && !defined(QT_BOOTSTRAPPED) static QString convertToUnicodeCharByChar(const char *chars, qsizetype length, QStringConverter::State *state) { diff --git a/src/corelib/text/qstringconverter_p.h b/src/corelib/text/qstringconverter_p.h index 83ffb889cb1..2e897c47eb1 100644 --- a/src/corelib/text/qstringconverter_p.h +++ b/src/corelib/text/qstringconverter_p.h @@ -331,12 +331,6 @@ struct Q_CORE_EXPORT QLocal8Bit #endif }; -/* - Converts from different utf encodings looking at a possible byte order mark at the - beginning of the string. If no BOM exists, utf-8 is assumed. - */ -Q_CORE_EXPORT QString qFromUtfEncoded(const QByteArray &ba); - QT_END_NAMESPACE #endif // QSTRINGCONVERTER_P_H diff --git a/src/gui/kernel/qclipboard.cpp b/src/gui/kernel/qclipboard.cpp index eb6c2af6d13..d51c356970d 100644 --- a/src/gui/kernel/qclipboard.cpp +++ b/src/gui/kernel/qclipboard.cpp @@ -286,7 +286,10 @@ QString QClipboard::text(QString &subtype, Mode mode) const } const QByteArray rawData = data->data(QLatin1String("text/") + subtype); - return qFromUtfEncoded(rawData); + auto encoding = QStringConverter::encodingForData(rawData.constData(), rawData.size()); + if (!encoding) + encoding = QStringConverter::Utf8; + return QStringDecoder(*encoding).decode(rawData); } /*!