diff --git a/src/platformsupport/clipboard/qmacmime.mm b/src/platformsupport/clipboard/qmacmime.mm index c97d961260..2679c92f20 100644 --- a/src/platformsupport/clipboard/qmacmime.mm +++ b/src/platformsupport/clipboard/qmacmime.mm @@ -418,10 +418,9 @@ QVariant QMacPasteboardMimeUnicodeText::convertToMime(const QString &mimetype, Q QVariant ret; if (flavor == QLatin1String("public.utf8-plain-text")) { ret = QString::fromUtf8(firstData); -#if QT_CONFIG(textcodec) } else if (flavor == QLatin1String("public.utf16-plain-text")) { - ret = QTextCodec::codecForName("UTF-16")->toUnicode(firstData); -#endif + QString str = QStringDecoder(QStringDecoder::Utf16)(firstData); + ret = str; } else { qWarning("QMime::convertToMime: unhandled mimetype: %s", qPrintable(mimetype)); } @@ -434,25 +433,23 @@ QList QMacPasteboardMimeUnicodeText::convertFromMime(const QString & QString string = data.toString(); if (flavor == QLatin1String("public.utf8-plain-text")) ret.append(string.toUtf8()); -#if QT_CONFIG(textcodec) else if (flavor == QLatin1String("public.utf16-plain-text")) { - QTextCodec::ConverterState state; + QStringEncoder::Flags f; #if defined(Q_OS_MACOS) // Some applications such as Microsoft Excel, don't deal well with // a BOM present, so we follow the traditional approach of Qt on // macOS to not generate public.utf16-plain-text with a BOM. - state.flags = QTextCodec::IgnoreHeader; + f = QStringEncoder::Flag::Default; #else // Whereas iOS applications will fail to paste if we do _not_ // include a BOM in the public.utf16-plain-text content, most // likely due to converting the data using NSUTF16StringEncoding // which assumes big-endian byte order if there is no BOM. - state.flags = QTextCodec::DefaultConversion; + f = QStringEncoder::Flag::WriteBom; #endif - ret.append(QTextCodec::codecForName("UTF-16")->fromUnicode( - string.constData(), string.length(), &state)); + QStringEncoder encoder(QStringEncoder::Utf16, f); + ret.append(encoder(string)); } -#endif return ret; }