Поддерживает ли Visual Studio 2010 исходный код C ++ в Unicode с Unicode Char в строковом литерале - PullRequest
1 голос
/ 16 июня 2011

Я хочу напрямую вставлять не-ASCII символы Юникода в строковые литералы и использовать их в printf .Это подразумевает, что мои исходные коды должны быть сохранены в utf-8 или utf-16.Visual Studio 2010 поддерживает редактирование и сохранение исходных файлов C ++ в любом формате.Но при компиляции и выполнении он не выдает правильных символов Юникода.Поддерживает ли компилятор строковые литералы со встроенными символами Юникода?

например

wprintf(L" chinese characters:中文字\n"); the trailing chinese characters cannot be displayed

Ответы [ 3 ]

1 голос
/ 17 июня 2011

У меня нет китайской версии Windows для тестирования, так что это полная догадка.

Функции вывода на консоль и файл знают, что файлы не кодируются в UTF-16, поэтому они пытаютсяпреобразовать символы в кодовую страницу перед выводом.Так же, как языком по умолчанию является «C», а не что-либо, основанное на настройках вашей системы, так и кодовая страница по умолчанию, вероятно, является неподходящей и не содержит китайских символов.1006 * для изменения кодовой страницы консоли.Неясно, изменяет ли эта функция кодовую страницу, используемую фактическим окном консоли, или она влияет только на преобразования из Unicode в программе.

0 голосов
/ 17 июня 2011

Возможно, что #pragma setlocale может быть тем, что вам нужно.

0 голосов
/ 16 июня 2011

Простой способ проверить широкие литералы - пропустить часть форматирования printf и передать строку прямо в ОС: WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), L" chinese characters:中文字", ....

...