summaryrefslogtreecommitdiffstats
path: root/src/xml/dom/qdom.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/xml/dom/qdom.cpp')
-rw-r--r--src/xml/dom/qdom.cpp21
1 files changed, 9 insertions, 12 deletions
diff --git a/src/xml/dom/qdom.cpp b/src/xml/dom/qdom.cpp
index 022de70090..5224c8b31c 100644
--- a/src/xml/dom/qdom.cpp
+++ b/src/xml/dom/qdom.cpp
@@ -5964,8 +5964,6 @@ void QDomDocumentPrivate::saveDocument(QTextStream& s, const int indent, QDomNod
#if QT_CONFIG(textcodec) && QT_CONFIG(regularexpression)
const QDomNodePrivate* n = first;
- QTextCodec *codec = nullptr;
-
if (n && n->isProcessingInstruction() && n->nodeName() == QLatin1String("xml")) {
// we have an XML declaration
QString data = n->nodeValue();
@@ -5974,13 +5972,14 @@ void QDomDocumentPrivate::saveDocument(QTextStream& s, const int indent, QDomNod
QString enc = match.captured(3);
if (enc.isEmpty())
enc = match.captured(5);
- if (!enc.isEmpty())
- codec = QTextCodec::codecForName(std::move(enc).toLatin1());
+ if (!enc.isEmpty()) {
+ auto encoding = QStringConverter::encodingForName(enc.toUtf8().constData());
+ if (!encoding)
+ qWarning() << "QDomDocument::save(): Unsupported encoding" << enc << "specified.";
+ else
+ s.setEncoding(encoding.value());
+ }
}
- if (!codec)
- codec = QTextCodec::codecForName("UTF-8");
- if (codec)
- s.setCodec(codec);
#endif
bool doc = false;
@@ -5998,11 +5997,9 @@ void QDomDocumentPrivate::saveDocument(QTextStream& s, const int indent, QDomNod
// Write out the XML declaration.
#if !QT_CONFIG(textcodec)
- const QLatin1String codecName("iso-8859-1");
+ const QLatin1String codecName("UTF-8");
#else
- const QTextCodec *const codec = s.codec();
- Q_ASSERT_X(codec, "QDomNode::save()", "A codec must be specified in the text stream.");
- const QByteArray codecName = codec->name();
+ const QByteArray codecName = QStringConverter::nameForEncoding(s.encoding());
#endif
s << "<?xml version=\"1.0\" encoding=\""