Возможно, у вас возникла проблема с окружающей средой. Вы не говорите, что платформа/окружающая среда вы работаете в, но принять следующую программу:
#include <iostream>
#include <cstdlib>
int main()
{
std::cout << u8"Chào thế giới!" << std::endl;
return EXIT_SUCCESS;
}
Это дает следующий вывод Iterm на Mac OS X: Chào thế giới!
С другой (не unicode), используя тот же код, вы можете получить символы UTF-8, интерпретируемые как ASCII на выходе. Я не знаю, что даст командная строка Windows, но если вы используете IDE, ваша среда IDE может или не может отображать UTF-8 независимо от того, работает ли ваша оболочка или нет.
Веб-пример.
https://code.sololearn.com/c39N9RN6b4Md/#cpp выходы: Ch├áo thß║┐ giß╗¢i!
Но http://ideone.com/OkkUZs работает точно такие же урожаи кода: Chào thế giới!
Это, вероятно, также стоит отметить, что в C++, чтобы правильно обрабатывать UTF-8 строк, граф "символы", убедитесь, что ваши строки верны UTF-8 и т. д., скорее всего, вы захотите использовать библиотеку Unicode - работа с Unicode нетривиальна.
Лично я нашел и https://github.com/nemtrif/utfcpp, и TinyUTF8, которые я отразил here, чтобы быть отличными библиотеками - достаточно маленькими, простыми и эффективными.
Надеюсь, что это поможет.
Ваш вопрос не говорит, в чем проблема, с которой вы сталкиваетесь ...? – jtbandes
Вам нужно использовать 'wcout' и т. Д. Посмотрите широкие символы/строки –
' #include ',' std :: setlocale (LC_ALL, ""); ',' std :: wcout << L "Chào. Đây là tiếng Việt. ".. .. работает на всех платформах .. но в какой системе вы работаете? Windows может не отображать символы без установленного языкового пакета; этот код отлично работает на одном из моих Linux-боксов с набором локалей, но мой BSD отображает только то, что он может, потому что он не имеет локального установленного. –
txtechhelp