mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-04-16 05:53:02 -04:00
CLI: Fix XML encoding when export database
Add write function to TextStream Fix #3900
This commit is contained in:
parent
792c1c94f7
commit
06e0f38523
@ -51,7 +51,7 @@ int Export::executeWithDatabase(QSharedPointer<Database> database, QSharedPointe
|
||||
errorTextStream << QObject::tr("Unable to export database to XML: %1").arg(errorMessage) << endl;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
outputTextStream << xmlData.constData() << endl;
|
||||
outputTextStream.write(xmlData.constData());
|
||||
} else if (format.startsWith(QStringLiteral("csv"), Qt::CaseInsensitive)) {
|
||||
CsvExporter csvExporter;
|
||||
outputTextStream << csvExporter.exportDatabase(database);
|
||||
|
@ -58,6 +58,15 @@ TextStream::TextStream(const QByteArray& array, QIODevice::OpenMode openMode)
|
||||
detectCodec();
|
||||
}
|
||||
|
||||
void TextStream::write(const char* str)
|
||||
{
|
||||
// Workaround for an issue with QTextStream. Its operator<<(const char *string) will encode the
|
||||
// string with a non-UTF-8 encoding. We work around this by wrapping the input string into
|
||||
// a QString, thus enforcing UTF-8. More info:
|
||||
// https://code.qt.io/cgit/qt/qtbase.git/commit?id=cec8cdba4d1b856e17c8743ba8803349d42dc701
|
||||
*this << QString(str);
|
||||
}
|
||||
|
||||
void TextStream::detectCodec()
|
||||
{
|
||||
QString codecName = "UTF-8";
|
||||
|
@ -43,6 +43,8 @@ public:
|
||||
explicit TextStream(QByteArray* array, QIODevice::OpenMode openMode = QIODevice::ReadWrite);
|
||||
explicit TextStream(const QByteArray& array, QIODevice::OpenMode openMode = QIODevice::ReadOnly);
|
||||
|
||||
void write(const char* str);
|
||||
|
||||
private:
|
||||
void detectCodec();
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user