& Quot; соиЬ & Quot; не работает с китайскими иероглифами

Мои коды так же просты, как эти:

#include <iostream>
using namespace std;
//Some codes here...
bool somefunction(){
cout<<"单元格";
return false;
}

и вот что я получил:

ошибка C2143: синтаксическая ошибка: отсутствует ';' перед «возвращением»;
ошибка C2001: перевод строки является постоянным;

Более того, если я изменюсь "单元格" в английскую версию, такую ​​как «ячейка», она работает отлично;

2

Решение

Ошибки компилятора указывают на то, что ваш компилятор не поддерживает символы Unicode в исходном коде. Вам придется их избегать, использовать константы широких символов и wcout:

wcout << L"\x5355\x5143\x683c";

Если вам нужно вывести символы в определенной кодировке (например, gb2312), используйте эту кодировку в строковом литерале:

cout << "\xb5\xa5\xd4\xaa\xb8\xf1"; // string encoded with GB2312
5

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

Для работы с неанглийскими наборами символов следует использовать std::wcout печатать широкоформатные символы, например

#include <iostream>
using namespace std;
//Some codes here...
bool somefunction(){
wcout<< L"单元格";
return false;
}

И убедитесь, что не смешали оба cout а также wcout в той же программе.

1

Используйте литералы wcout и Unicode (L «单元 格»). Это хорошая практика, даже если вы имеете дело только с английскими символами. Также используйте wstring.

Изменить: На самом деле другая проблема может быть в том, что вы храните файл в кодировке не-Unicode, поэтому символы теряются. Скажите вашему редактору сохранить файл как Unicode.

Другая проблема может заключаться в том, что консоль (или wcout) не отображает символы Юникода правильно. Если вы отображаете их в окне сообщений (с MessageBoxW), они отображаются правильно.

0

Вы всегда должны сохранять свой исходный код как UTF-8 с BOM.

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