[Qt-interest] Have QXmlStreameWriter write the encoding information

Andreas Pakulat apaku at gmx.de
Wed Jun 3 09:06:59 CEST 2009


On 02.06.09 23:01:37, Lingfa Yang wrote:
> Marc Balmer wrote:
> > Am 29.05.2009 um 16:13 schrieb Marc Balmer:
> >
> >   
> >> Am 29.05.2009 um 15:40 schrieb Andreas Pakulat:
> >>
> >>     
> >>> On 29.05.09 14:19:57, Marc Balmer wrote:
> >>>       
> >>>> Am 29.05.2009 um 14:16 schrieb Marc Balmer:
> >>>>
> >>>>         
> >>>>> Hi
> >>>>>
> >>>>> When I create a XML data stream using QXmlStreamWriter, my stream
> >>>>> starts with
> >>>>>
> >>>>> <?xml version="1.0"?>
> >>>>>
> >>>>> How can I add the encoding information, so that I get
> >>>>>
> >>>>> <?xml version="1.0" encoding="UTF-8"?>
> >>>>>
> >>>>>           
> >>>> I forgot to add my code, so here is the snippet:
> >>>>
> >>>> QXmlStreamWriter xml(&xmlData);
> >>>> xml.setAutoFormatting(true);
> >>>> xml.setCodec("UTF-8");
> >>>> xml.writeStartDocument();
> >>>>
> >>>> xml.writeStartDocument() does not output the encoding information.
> >>>>         
> >>> Did you try with a different encoding? The reason it doesn't write  
> >>> the
> >>> encoding out could be that XML standard demands utf-8 to be used
> >>> during
> >>> parsing if no encoding attribute is set. Hence the xml writer just
> >>> avoids
> >>> "stating the obvious".
> >>>       
> >> that is not true.  If I set the codec to ISO-8859-1 and output Latin1
> >> data, it still
> >> does not write the encoding.
> >>     
> >
> > Soe does anyone on this list have an idea how I can get the encoding
> > information to be written?  Or is it time to file a bug report?
> >
> What you want is a processing instruction line, so you should call 
> writeProcessingInstruction(), i.e.
>     xml.writeProcessingInstruction("xml", "version=\"1.0\" 
> encoding=\"UTF-8\"");

That will produce

<?xml version="1.0"?><?xml version="1.0" encoding="UTF-8"?>

so definetly not what he wants.

If you're writing into a QString there's simply no point in adding an
encoding, because the encoding is dictated by QString.

Andreas

-- 
Good night to spend with family, but avoid arguments with your mate's
new lover.



More information about the Qt-interest-old mailing list