Я написал этот код, используя VS 2012:C++ std :: wofstream unicode проблема.
std::wofstream logout("my_log.txt", std::ios_base::out | std::ios_base::trunc);
std::locale utf8_locale(locale(), new codecvt_utf8<wchar_t>);
logout.imbue(utf8_locale);
if (!logout.is_open())
{
printf("Cannot open file.\n");
return 1;
}
else printf("Log file created.\n");
logout << "Client IP │"<< "Recv time │"<< "Request │"<< "Response "<<endl;
logout << "─────────────────────┼"<< "─────────────────────────┼"<<endl;
В my_log.txt файле все символы Юникода заменяются «?????». Я хочу создать что-то вроде таблицы файлов журналов. Если я использую стандартные символы ASCII, такие как «---», он будет работать, и все они будут показаны правильно. Ive попытался изменить глобальную локаль, но мне это не удалось.
Вы уверены, что редактор, который используете для просмотра файла, поддерживает UTF8/в режиме Unicode? – Mat
Хм, на самом деле я не уверен. Я попытался открыть этот файл, используя MS Word и блокнот, но проблема остается. –
Продукт MS не поддерживает UTF8. Все MS/Windows - UTF16. Попробуйте шестнадцатеричный просмотрщик, чтобы узнать, что действительно в вашем файле. –