Во время тестирования некоторых функций для преобразования строк между wchar_t и utf8 я встретил следующий странный результат с помощью Visual C++ 2008 ExpressНеожиданный вывод std :: wcout << L "élève"; В Windows Shell
std::wcout << L"élève" << std::endl;
распечатывает «ÚlÞve:», который, очевидно, не то, что, как ожидается.
Это, очевидно, ошибка. Как это может быть ? Как я предполагаю иметь дело с такой «особенностью»?
К сожалению, использование выходов кода Дэйва точно такой же вывод, , Итак, я думаю, это означает, что оболочка не поддерживает unicode. – chmike
Кажется, что я должен активировать поддержку UTF-8 в оболочке, выпустив команду chcp 65001. Как я могу сделать это изнутри программы, прежде чем записывать вещи? – chmike
Он не будет выводить полный UTF-16. Вам повезло, если вы получите выход ANSI, потому что байты верхнего порядка сбиты. Но символы совместимы с ANSI стр. 1252. –