fprintf unicode字符的正确方法

时间:2015-08-05 04:57:13

标签: c++ c unicode

这是我简单的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上运行。

有谁知道实现这一目标?问候。

1 个答案:

答案 0 :(得分:0)

我认为您需要首先设置区域设置才能使其正常运行..

有关详细信息,请参阅此问题

Why doesn't printf format unicode parameters?

如果你的角色在那里,你可以使用UTF-8字符集......

Printing UTF-8 strings with printf - wide vs. multibyte string literals