From 12f0bfb59cda3e1b4a88290c1bbf357d3adb46f7 Mon Sep 17 00:00:00 2001 From: Mavridis Philippe Date: Thu, 4 Jul 2024 11:38:46 +0300 Subject: [PATCH] KAddressBook: Fix import encoding for vCard v4. Signed-off-by: Mavridis Philippe --- kaddressbook/xxport/vcard_xxport.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/kaddressbook/xxport/vcard_xxport.cpp b/kaddressbook/xxport/vcard_xxport.cpp index 293879cc..6c09db00 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 );