On 2016-08-11 19:53, Mark Gaiser wrote:
On Thu, Aug 11, 2016 at 6:29 PM, Thiago Macieira
<thiago.macie...@intel.com <mailto:thiago.macie...@intel.com>> wrote:

    On quinta-feira, 11 de agosto de 2016 11:40:46 PDT Mark Gaiser wrote:
    > Is there any way that i can use a string with unicode code points within
    > tr(...) that works on MSVC 2010 (as that is my setup), but it would be
    > great if it also works under MSVC 2015 and MinGW.

    There's no way to make that work with MSVC 2010. If you want this to
    work,
    your options are:

..
..
The only option i seem to have left for 2010 are apparently:
- Making sure the source files are UTF-8 formatted (most is ascii at the
moment)
- Using tr("Coördinaat"); as opposed to tr("Co\u00F6rdinaat");, that
does work, but is not preferred.

Actually it's possible to use unicode code points in tr(...) you just have to know how to play hardball with the compiler :-)

Instead of trying to play nice with tr("Co\u00F6rdinaat"); you use
tr("Co\xC3\xB6rdinaat");

Yes \uC3B6 is the UTF-8 encoding of the Unicode code point U+00F6
(if you type in tr("Coördinaat") and then hexdump the .exe file you'll see those bytes.)

Effectively you're saying to the compiler: don't mind us hex bytes passing, we're not the unicode characters you're looking for. This works as long as none of the 2, 3 or 4 UTF-8 characters are null chaps.

I've used this trick on MSVC2012 and MSVC2013, so it should work in MSVC2010 as well. (The reason: usually I code (Swedish) characters with tr("Coöordinaat"); but this is brittle, because then Notepad becomes your enemy. If you're tired one day and make a quick edit in Notepad on your mainwindow.cpp, Notepad "helps" your by inserting the BOM and *BOOM* tr("Coördinaat") does not longer compile correctly, but tr("Co\xC3\xB6rdinaat") does.)

Rgrds Henry


_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to