[Interest] QDateTime + QXmlStreamWriter on non-UTF8 compatible systems
Thiago Macieira
thiago.macieira at intel.com
Fri Dec 22 22:22:26 CET 2017
On sexta-feira, 22 de dezembro de 2017 17:21:24 -02 Scott Bloom wrote:
> I was able to track down the issue.
>
> Typically, I was writing to a QString, for some reason, there is an
> undocumented difference in the writer for QString vs QIODevice writing.
It's not really undocumented. QString is UTF-16, so it requires no encoding.
QIODevice is 8-bit, so it encodes.
> From QXmlStreamWriter::writeStartDocument
>
> if (d->device) { // stringDevice does not get any encoding
> d->write("\" encoding=\"");
> #ifdef QT_NO_TEXTCODEC
> d->write("iso-8859-1");
> #else
> d->write(d->codec->name().constData(), d->codec->name().length());
> #endif
> }
>
> The codec was not getting written out since I was using a QString, by
> changing to a QBuffer, the encoding is written out, and the XML can be read
> in properly.
Again, as expected.
> Note, according to the documentation there is NO differentiation of "String
> based" vs "Non String based" void QXmlStreamWriter::writeStartDocument()
> This is an overloaded function.
Right.
> Frankly, I am not sure why this difference exists, but it should definitely
> be documented.
There's no need for it. Your bug isn't here yet.
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel Open Source Technology Center
More information about the Interest
mailing list