diff options
-rw-r--r-- | kaddressbook/xxport/vcard_xxport.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/kaddressbook/xxport/vcard_xxport.cpp b/kaddressbook/xxport/vcard_xxport.cpp index 293879cc5..6c09db006 100644 --- a/kaddressbook/xxport/vcard_xxport.cpp +++ b/kaddressbook/xxport/vcard_xxport.cpp @@ -239,9 +239,22 @@ TDEABC::AddresseeList VCardXXPort::importContacts( const TQString& ) const // With version 3.0, vCards are encoded with UTF-8 by default. Otherwise, use fromLatin1() // and hope that are fields are encoded correctly. - if ( TQString::fromLatin1( rawData ).lower().contains( "version:3.0" ) ) { + bool useUtf8; + TQString tmp = TQString::fromLatin1(rawData).lower(); + int ver = tmp.find("version:"); + if (ver == -1) { + // no version info, assume utf8 + useUtf8 = true; + } + else { + float vCardVersion = tmp.mid(ver + 8, tmp.find("\n", ver)).toFloat(); + useUtf8 = (vCardVersion >= 3.0); + } + + if (useUtf8) { vCardText = TQString::fromUtf8( rawData ); - } else { + } + else { vCardText = TQString::fromLatin1( rawData ); } addrList += parseVCard( vCardText ); |