这是我简单的C / C ++程序:
int main() {
FILE* f = fopen("MyTest.log", "w");
fprintf(f, "%ls\n", L"abc");
fprintf(f, "%ls\n", L"您好"); // Data from a different locale
fprintf(f, "%ls\n", L"def");
fclose(f);
return 0;
}
当我运行此程序时,生成的文件根本不包含中间行。一旦在传递的参数中检测到不同的字符集,fprintf
就会返回。
我在Windows和Ubuntu上测试了这个程序。这两个地方都存在同样的问题。
浏览论坛时,我发现了一些提示,例如使用_setmode()和fwprintf。但是,如果可能的话,我想坚持使用fprintf()。此外,我的代码需要在Windows和Linux上运行。
有谁知道实现这一目标?问候。
答案 0 :(得分:0)
我认为您需要首先设置区域设置才能使其正常运行..
有关详细信息,请参阅此问题
Why doesn't printf format unicode parameters?
如果你的角色在那里,你可以使用UTF-8字符集......
Printing UTF-8 strings with printf - wide vs. multibyte string literals