summaryrefslogtreecommitdiffstats
path: root/src/corelib/io
diff options
context:
space:
mode:
authorAlessandro Portale <alessandro.portale@nokia.com>2010-03-16 21:32:28 (GMT)
committerAlessandro Portale <alessandro.portale@nokia.com>2010-03-16 21:32:28 (GMT)
commit24096c5613731ae19e8fefe071570fa1d0e7ab36 (patch)
tree87b3bc95e528057f5178a3718be0715dde56fcf4 /src/corelib/io
parent3675bfca72e8e848a3a547dfc68fadbd775e973b (diff)
downloadQt-24096c5613731ae19e8fefe071570fa1d0e7ab36.zip
Qt-24096c5613731ae19e8fefe071570fa1d0e7ab36.tar.gz
Qt-24096c5613731ae19e8fefe071570fa1d0e7ab36.tar.bz2
Handle Symbian's file name encoding, correctly.
On Symbian, we incorrectly assumed that filenames are encoded in local8bit. OpenC's implementation of wcstombs, mbstowcs, etc. are all UTF-8, regardless of the locale. Task-number: QTBUG-7175 Reviewed-by: Shane Kearns
Diffstat (limited to 'src/corelib/io')
-rw-r--r--src/corelib/io/qfile.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/corelib/io/qfile.cpp b/src/corelib/io/qfile.cpp
index 728c316..aa1c7d9 100644
--- a/src/corelib/io/qfile.cpp
+++ b/src/corelib/io/qfile.cpp
@@ -62,21 +62,25 @@ static const int QFILE_WRITEBUFFER_SIZE = 16384;
static QByteArray locale_encode(const QString &f)
{
-#ifndef Q_OS_DARWIN
- return f.toLocal8Bit();
-#else
+#if defined(Q_OS_DARWIN)
// Mac always expects UTF-8... and decomposed...
return f.normalized(QString::NormalizationForm_D).toUtf8();
+#elif defined(Q_OS_SYMBIAN)
+ return f.toUtf8();
+#else
+ return f.toLocal8Bit();
#endif
}
static QString locale_decode(const QByteArray &f)
{
-#ifndef Q_OS_DARWIN
- return QString::fromLocal8Bit(f);
-#else
+#if defined(Q_OS_DARWIN)
// Mac always gives us UTF-8 and decomposed, we want that composed...
return QString::fromUtf8(f).normalized(QString::NormalizationForm_C);
+#elif defined(Q_OS_SYMBIAN)
+ return QString::fromUtf8(f);
+#else
+ return QString::fromLocal8Bit(f);
#endif
}