Мои коды так же просты, как эти:
#include <iostream>
using namespace std;
//Some codes here...
bool somefunction(){
cout<<"单元格";
return false;
}
и вот что я получил:
ошибка C2143: синтаксическая ошибка: отсутствует ';' перед «возвращением»; ошибка C2001: перевод строки является постоянным;
Более того, если я изменюсь "单元格"
в английскую версию, такую как «ячейка», она работает отлично;
Ошибки компилятора указывают на то, что ваш компилятор не поддерживает символы Unicode в исходном коде. Вам придется их избегать, использовать константы широких символов и wcout
:
wcout << L"\x5355\x5143\x683c";
Если вам нужно вывести символы в определенной кодировке (например, gb2312), используйте эту кодировку в строковом литерале:
cout << "\xb5\xa5\xd4\xaa\xb8\xf1"; // string encoded with GB2312
Для работы с неанглийскими наборами символов следует использовать std::wcout
печатать широкоформатные символы, например
#include <iostream>
using namespace std;
//Some codes here...
bool somefunction(){
wcout<< L"单元格";
return false;
}
И убедитесь, что не смешали оба cout
а также wcout
в той же программе.
Используйте литералы wcout и Unicode (L «单元 格»). Это хорошая практика, даже если вы имеете дело только с английскими символами. Также используйте wstring.
Изменить: На самом деле другая проблема может быть в том, что вы храните файл в кодировке не-Unicode, поэтому символы теряются. Скажите вашему редактору сохранить файл как Unicode.
Другая проблема может заключаться в том, что консоль (или wcout) не отображает символы Юникода правильно. Если вы отображаете их в окне сообщений (с MessageBoxW), они отображаются правильно.
Вы всегда должны сохранять свой исходный код как UTF-8 с BOM.