summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMavridis Philippe <mavridisf@gmail.com>2024-07-04 11:38:46 +0300
committerMavridis Philippe <mavridisf@gmail.com>2024-09-01 14:59:29 +0300
commit928ea3c2d80479d498e5ecc78dc98eed23f2da25 (patch)
treef0c0f1afc205595269d2cdc095dd80f0a4671e01
parent7e679dc8d53bb1d41e9cc37875bf75e207bac7fb (diff)
downloadtdepim-r14.1.x.tar.gz
tdepim-r14.1.x.zip
KAddressBook: Fix import encoding for vCard v4.r14.1.x
Signed-off-by: Mavridis Philippe <mavridisf@gmail.com> (cherry picked from commit 12f0bfb59cda3e1b4a88290c1bbf357d3adb46f7)
-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 );