Add codec blacklist for UTF-8 detection 7/head
authorBas Pape <baspape@gmail.com>
Sun, 3 Feb 2013 13:49:47 +0000 (14:49 +0100)
committerBas Pape <baspape@gmail.com>
Sun, 3 Feb 2013 13:49:47 +0000 (14:49 +0100)
ISO-2022-JP is valid UTF-8, which means this codec needs to bypass the
auto-detection.

src/common/util.cpp

index 75f32f2..45f99e9 100644 (file)
 
 class QMetaMethod;
 
+// MIBenum values from http://www.iana.org/assignments/character-sets/character-sets.xml#table-character-sets-1
+static QList<int> utf8DetectionBlacklist = QList<int>()
+    << 39 /* ISO-2022-JP */;
+
 QString nickFromMask(QString mask)
 {
     return mask.section('!', 0, 0);
@@ -90,6 +94,9 @@ QString stripAcceleratorMarkers(const QString &label_)
 
 QString decodeString(const QByteArray &input, QTextCodec *codec)
 {
+    if (codec && utf8DetectionBlacklist.contains(codec->mibEnum()))
+        return codec->toUnicode(input);
+
     // First, we check if it's utf8. It is very improbable to encounter a string that looks like
     // valid utf8, but in fact is not. This means that if the input string passes as valid utf8, it
     // is safe to assume that it is.