Hi!

Ralph Glasstetter wrote:

> I just googled a bit and found a discussion like ours here, where they set 
> the 
> encoding of the output stream explicitely before writing a preferences 
> file... please try this on your box to see if that works also with your Latin 
> locale:
> 
>   stream.setEncoding(QTextStream::UnicodeUTF8);
>   stream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
>   stream << doc.toString();
> 
> in DVBcut at Line 258.

Oh well... there is the explanation for the double conversion. I should
have checked the docs for QTextStream, in particular the "<<" operator
with a QCString argument:

        The string s is assumed to be Latin1 encoded independent of the
        Encoding set for the QTextStream.

Who the f*ck told that operator to mess with the encoding?
Of course toCString() can't work correctly, then.

> You remember... toString() (as in rev69) did not work under Windows but with 
> setting the encoding now it does! The behavoir under my UTF-8 Linux is 
> unaffected and working as before in rev69 without the setEncoding()...

Sounds good.

> PS: setEncoding() together with toCstring() has the effect that it does no
> longer work under Windows... producing the same double converted filename as 
> under Linux with rev70!

For toCString() to work correctly, the "<<" operator should write the
bytes unmodified (i.e. use QTextStream::Latin1 encoding). This should
also be the fastest mode (not that it would matter much).

Since we also use "<<" with a "const char*" argument, which has the same
properties, the cleanest solution is to do it this way:

        stream.setEncoding(QTextStream::Latin1);
        stream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
        stream << doc.toCString();

If we ever replace the QTextStream with a std::ostream or another "byte
transparent" kind of stream, this variant will continue to work, while
the other one won't.

On my system, this creates a correctly encoded project file in both
Latin-15 and UTF-8 based locales. I'll check the Windows part this evening.

> PPS: In the above mentioned discussion someone wrote: 
> 'This discussion so far can thus be summed up as "encodings are a pain in the 
> ass and really hard to get right"'

Didn't I mention that already? ;-)

And the combination of encodings and Qt is a royal PITA.

-- 
Michael "Tired" Riepe <[EMAIL PROTECTED]>
X-Tired: Each morning I get up I die a little

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
DVBCUT-user mailing list
DVBCUT-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dvbcut-user

Reply via email to