diff --git a/src/network/access/qftp.cpp b/src/network/access/qftp.cpp index 74c95ecd5e..30bb04b768 100644 --- a/src/network/access/qftp.cpp +++ b/src/network/access/qftp.cpp @@ -611,7 +611,7 @@ bool QFtpDTP::parseDir(const QByteArray &buffer, const QString &userName, QUrlIn if (buffer.isEmpty()) return false; - QString bufferStr = QString::fromLatin1(buffer).trimmed(); + QString bufferStr = QString::fromUtf8(buffer).trimmed(); // Unix style FTP servers QRegExp unixPattern(QLatin1String("^([\\-dl])([a-zA-Z\\-]{9,9})\\s+\\d+\\s+(\\S*)\\s+" @@ -676,7 +676,7 @@ void QFtpDTP::socketReadyRead() // does not exist, but rather write a text to the data socket // -- try to catch these cases if (line.endsWith("No such file or directory\r\n")) - err = QString::fromLatin1(line); + err = QString::fromUtf8(line); } } } else { @@ -932,7 +932,7 @@ void QFtpPI::readyRead() while (commandSocket.canReadLine()) { // read line with respect to line continuation - QString line = QString::fromLatin1(commandSocket.readLine()); + QString line = QString::fromUtf8(commandSocket.readLine()); if (replyText.isEmpty()) { if (line.length() < 3) { // protocol error @@ -964,7 +964,7 @@ void QFtpPI::readyRead() replyText += line; if (!commandSocket.canReadLine()) return; - line = QString::fromLatin1(commandSocket.readLine()); + line = QString::fromUtf8(commandSocket.readLine()); lineLeft4 = line.left(4); } replyText += line.mid(4); // strip reply code 'xyz ' @@ -1215,7 +1215,7 @@ bool QFtpPI::startNextCmd() qDebug("QFtpPI send: %s", currentCmd.left(currentCmd.length()-2).toLatin1().constData()); #endif state = Waiting; - commandSocket.write(currentCmd.toLatin1()); + commandSocket.write(currentCmd.toUtf8()); return true; } diff --git a/tests/auto/network/access/qftp/tst_qftp.cpp b/tests/auto/network/access/qftp/tst_qftp.cpp index 795548ccc8..bfc5a73cd8 100644 --- a/tests/auto/network/access/qftp/tst_qftp.cpp +++ b/tests/auto/network/access/qftp/tst_qftp.cpp @@ -732,10 +732,11 @@ void tst_QFtp::put_data() QByteArray bigData( 10*1024*1024, 0 ); bigData.fill( 'A' ); - // test the two put() overloads in one routine + // test the two put() overloads in one routine with a file name containing + // U+0x00FC (latin small letter u with diaeresis) for QTBUG-52303, testing UTF-8 for ( int i=0; i<2; i++ ) { QTest::newRow( QString("relPath01_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() - << QString("qtest/upload/rel01_%1") << rfc3252 + << (QLatin1String("qtest/upload/rel01_") + QChar(0xfc) + QLatin1String("%1")) << rfc3252 << (bool)(i==1) << 1; /* QTest::newRow( QString("relPath02_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password")