Вы должны "включить" локаль перед использованием wofstream:
std::locale::global(std::locale()); // Enable locale support
wofstream file("test.txt");
file << L"A’B";
Так что, если у вас есть системная локаль en_US.UTF-8
, тогда файл test.txt
будет включать
Данные в кодировке utf8 (4 байта), если у вас есть системная локаль en_US.ISO8859-1
, то она будет кодироваться как 8-битная кодировка (3 байта), если только ISO 8859-1 не пропустит такой символ.
wofstream file("test.txt");
file << "A’B" ;
file.close();
Этот код работает, потому что "A’B"
на самом деле является строкой utf-8, и вы сохраняете utf-8
строка в файл побайтно.
Примечание: Я предполагаю, что вы используете POSIX-подобную ОС, и у вас есть локаль по умолчанию, отличная от "C", которая является локалью по умолчанию.