<div dir="ltr"><div dir="ltr">I've posted about this issue (I think) on slack a bit earlier, see<div><a href="https://cpplang.slack.com/archives/C29936TQC/p1549899016010000">https://cpplang.slack.com/archives/C29936TQC/p1549899016010000</a><br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Mar 14, 2019 at 11:51 PM Matthew Woehlke <<a href="mailto:mwoehlke.floss@gmail.com">mwoehlke.floss@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">While working on some modernization of my application — in particular,<br>
converting some UTF-8 literals to use QStringLiteral — I noticed a<br>
concerning compiler warning:<br>
<br>
  warning C4566: character represented by universal-character-name<br>
  '\uXXXX' cannot be represented in the current code page (1252)<br>
<br>
After doing some testing, it turns out that, given code like<br>
QStringLiteral("\u269E \U0001f387 \u269F"), MSVC is indeed butchering<br>
the string.<br>
<br>
Further investigation shows that the problem seems to be with the<br>
implementation of QStringLiteral. In particular, it appears that the<br>
preprocessor initially sees just the raw string literal without the 'u'<br>
prefix, butchers it, then later "promotes" it to a UTF-16 literal, but<br>
by then the damage has been done.<br>
<br>
While this absolutely feels like a compiler bug, it's an *awful* big<br>
gotcha that probably should be documented. Also, is there anything that<br>
Qt can do to work around it? (I know these sorts of macro expansions can<br>
be tricksy...)<br>
<br>
Note: and the *local* work-around is apparently to include the 'u'<br>
prefix on my own literal; apparently doubling it (`uu"stuff"`) is okay.<br>
<br>
-- <br>
Matthew<br>
_______________________________________________<br>
Development mailing list<br>
<a href="mailto:Development@qt-project.org" target="_blank">Development@qt-project.org</a><br>
<a href="https://lists.qt-project.org/listinfo/development" rel="noreferrer" target="_blank">https://lists.qt-project.org/listinfo/development</a><br>
</blockquote></div>