VS2013 and Unicode literals give warnings

What's wrong with this code:

static const std::vector<wchar_t> glyphs(
    {L'A', L'B', L'C', L'D', L'E', L'F', L'G', L'H',
     L'I', L'J', L'K', L'L', L'M', L'N', L'O', L'P',
     L'Q', L'R', L'S', L'T', L'U', L'V', L'W', L'X',
     L'Y', L'Z', L' ', L'Ä', L'Ö', L'Ü', L'Å', L' ',
     L'a', L'b', L'c', L'd', L'e', L'f', L'g', L'h',
     L'i', L'j', L'k', L'l', L'm', L'n', L'o', L'p',
     L'q', L'r', L's', L't', L'u', L'v', L'w', L'x',
     L'y', L'z', L' ', L'ä', L'ö', L'ü', L'å', L'\"',
     L'0', L'1', L'2', L'3', L'4', L'5', L'6', L'7',
     L'8', L'9', L'!', L'\"',L'#', L'$', L'%', L'&',
     L' ', L'(', L')', L'*', L'+', L',', L'-', L'.',
     L'/', L':', L';', L'<', L'=', L'>', L'?', L' ',
     L'Â', L'À', L'É', L'È', L'Ê', L'Ë', L'Î', L'Ï',
     L'Ô', L'Û', L'Ç', L'â', L'à', L'é', L'è', L'ê',
     L'ë', L'î', L'ï', L'ô', L'û', L'ç', L'\'',L' '});

      

The exact same piece of code compiles without warnings and works with GCC and Clang, but with VS2013 I get:

warning: C4066: characters beyond first in wide-character constant ignored

      

.. for lines starting with glyphs 'y', 'Y', 'Â', 'Ô' and 'ë'.

+3


source to share


1 answer


The only way I can reproduce this is by saving the text to a utf8 encoded file without a BOM. The compiler guesses the default codepage and strips off double bytes in utf8 codes produced by accented characters.



In VS use "File + Save As", click the arrow on the "Save" button and select "Save with Encoding." Select "Unicode (UTF-8 with signature) - Codepage 65001" from the list.

+6


source







All Articles