[Qt-interest] Have QXmlStreameWriter write the encoding information

Lingfa Yang lingfa at brandeis.edu
Wed Jun 3 17:04:04 CEST 2009


Andreas Pakulat wrote:
> 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
>
>   
Try it, Andreas. It does work:-)



More information about the Qt-interest-old mailing list