summaryrefslogtreecommitdiffstats
path: root/kaddressbook
diff options
context:
space:
mode:
Diffstat (limited to 'kaddressbook')
-rw-r--r--kaddressbook/xxport/vcard_xxport.cpp17
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 );