【发布时间】:2015-09-12 14:17:54
【问题描述】:
我使用 VS 2012 编写了这段代码:
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 文件中,所有 unicode 符号都替换为“?????”。我想创建类似日志文件表的东西。如果我使用像“---”这样的标准 ASCII 符号,它会起作用,并且它们都会直接显示。 我试图改变全局语言环境,但我没有成功。
【问题讨论】:
-
您确定用于查看文件的编辑器支持 UTF8/处于 unicode 模式吗?
-
嗯,其实我不确定。我曾尝试使用 MS Word 和记事本打开此文件,但问题仍然存在。
-
没有 MS 产品支持 UTF8。所有 MS/Windows 都是 UTF16。尝试使用十六进制查看器来查看文件中的真实内容。
-
@RichardCritten 我文件中的所有 unicode 符号都以十六进制格式显示为 3F。