vandenoever added a comment.
Here is a patch that solves the problem: diff --git a/src/core/kconfigini.cpp b/src/core/kconfigini.cpp index 39e5936..b674973 100644 --- a/src/core/kconfigini.cpp +++ b/src/core/kconfigini.cpp @@ -673,7 +673,12 @@ QByteArray KConfigIniBackend::stringToPrintable(const QByteArray &aString, Strin switch (s[i]) { default: // The \n, \t, \r cases (all < 32) are handled below; we can ignore them here - if (((unsigned char)s[i]) < 32 || ((unsigned char)s[i]) >= 127) { + if (((unsigned char)s[i]) < 32) { + goto doEscape; + } + // GroupString and KeyString should be valid UTF-8, but ValueString + // can be a bytearray with non-UTF-8 bytes that should be escaped. + if (type == ValueString && ((unsigned char)s[i]) >= 127) { goto doEscape; } *data++ = s[i]; REPOSITORY R237 KConfig REVISION DETAIL https://phabricator.kde.org/D17651 To: vandenoever, dfaure, arichardson, apol Cc: aacid, apol, kde-frameworks-devel, michaelh, ngraham, bruns