VS2013 и Unicode выдают предупреждения

Что не так с этим кодом:

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' '});

Точно такой же кусок кода компилируется без предупреждений и работает с GCC и Clang, но с VS2013 я получаю:

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

..для строк, которые начинаются с глифов ‘y’, ‘Y’, ‘Â’, ‘Ô’ и ‘ë’.

3

Решение

Есть только один способ повторить это, сохранив текст в файл, закодированный в utf8 без спецификация Компилятор будет угадывать кодовую страницу системы по умолчанию и использовать двойные байты в кодах utf8, созданных символами с акцентом.

В VS используйте File + Save As, нажмите стрелку на кнопке Save и выберите «Сохранить с кодировкой». Выберите «Unicode (UTF-8 с подписью) — кодовая страница 65001» из списка.

6

Другие решения


По вопросам рекламы [email protected]