[Development] FW: Backwards compatibiltiy break in Qt 5.5

NIkolai Marchenko enmarantispam at gmail.com
Mon Jul 27 18:20:34 CEST 2015


> I'm ok with a flag, as long as it's the default.
I am ok with a flag too. As long as escaping can be turned off, preferably
in one place instead of editing qDebug()'s everywhere
it is ok. I am so vehemently against the change as it is now primarily
because it
a) cannot be contained in a simple #ifdef block
b) getting the old behaviour "back" requires using "noquote" everywhere
which breaks the code if you need to build it with earlier qt version

On Mon, Jul 27, 2015 at 7:13 PM, Thiago Macieira <thiago.macieira at intel.com>
wrote:

> On Monday 27 July 2015 08:44:30 Knoll Lars wrote:
> > I can understand the issues that non latin speakers are facing with this
> > well. I’ve often used qDebug() to debug non latin use cases, and in 90%
> of
> > the cases I just want to know what the string reads. The unicode content
> > of it is interesting to me in only 10% of the cases. For most users not
> > debugging Qt’s internals I would assume that ratio to be more like 99 to
> 1.
>
> As I said in my email, the problem is that you will not turn this on for
> those
> 10% of the cases until you've already lost data, either visibly or really.
> I'm
> counting ambiguity and homographs as apparent data loss because it will
> send
> you down the wrong debugging path.
>
> > Thiago, which backends can’t handle utf8 or utf16 output these days?
>
> Android log, slog2, syslog and the regular stderr output if the system
> locale
> isn't UTF-8. In particular, on Windows the system locale is never UTF-8
> unless
> you're using Vietnamese Windows. On the other hand, the OS X system locale
> is
> always UTF-8 unless you've messed up, including with setCodecForLocale.
>
> Or, if I list those that always do: WIndows OutputDebugString and journald.
>
> None of those are binary-safe, which means they will not work with a
> QString
> containing a NUL character.
>
> > One idea could be a slightly modified approach that is more compatible:
> >
> > * We always encode QStrings as utf8 (maybe utf16 for the windows console)
> > when sending them to qDebug()
>
> That would change behaviour for people with non-UTF-8 systems, as they'd
> now
> see mojibake.
>
> > * We quote every character that is not printable (ie. !QChar::isPrint())
>
> This is what I've done, except that I used ctype.h's isprint(), under the
> "C"
> locale. I considered using QChar::isPrint here, but it would be very
> expensive
> and it would not solve the homograph and ambiguity problem anyway. Better
> to
> just do nothing than use QChar::isPrint.
>
> > * We add a flag that would give fully quoted strings so you can get a
> > quoted version if required (e.g. qDebug() << quoteStrings)
>
> I'm ok with a flag, as long as it's the default.
>
> --
> Thiago Macieira - thiago.macieira (AT) intel.com
>   Software Architect - Intel Open Source Technology Center
>
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20150727/1ee1e61d/attachment.html>


More information about the Development mailing list