diff options
author | Mavridis Philippe <mavridisf@gmail.com> | 2024-07-04 11:38:46 +0300 |
---|---|---|
committer | Mavridis Philippe <mavridisf@gmail.com> | 2024-09-01 14:59:29 +0300 |
commit | 928ea3c2d80479d498e5ecc78dc98eed23f2da25 (patch) | |
tree | f0c0f1afc205595269d2cdc095dd80f0a4671e01 | |
parent | 7e679dc8d53bb1d41e9cc37875bf75e207bac7fb (diff) | |
download | tdepim-928ea3c2d80479d498e5ecc78dc98eed23f2da25.tar.gz tdepim-928ea3c2d80479d498e5ecc78dc98eed23f2da25.zip |
KAddressBook: Fix import encoding for vCard v4.
Signed-off-by: Mavridis Philippe <mavridisf@gmail.com>
(cherry picked from commit 12f0bfb59cda3e1b4a88290c1bbf357d3adb46f7)
-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 ); |