2011-06-16 52 views
1

我想直接将非ASCII Unicode字符嵌入到字符串文字中并在printf中使用它们。这意味着我的源代码必须保存在utf-8或utf-16中。 Visual Studio 2010不支持以任何格式编辑和保存C++源文件。但编译&执行时,它不会产生正确的Unicode字符。编译器是否支持嵌入unicode字符的字符串文字?Visual Studio 2010是否支持Unicode字符串中的Unicode字符的C++源代码

例如

wprintf(L" chinese characters:中文字\n"); the trailing chinese characters cannot be displayed 
+0

可能重复的[utfcpp和Win32广泛的API](http://stackoverflow.com/questions/3329718/utfcpp-and-win32-wide-api) – 2011-06-16 22:18:01

回答

0

最简单的方法来测试广泛的文字是跳过的printf格式化部分,并给您的字符串直奔OS:WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), L" chinese characters:中文字", ...

0

#pragma setlocale可能是您需要的。

1

我没有中文版的Windows来测试,所以这是完整的猜测。

控制台和文件输出功能知道文件不是用UTF-16编码的,所以他们试图在输出之前将字符转换为代码页。就像默认语言环境是“C”而不是基于系统设置的任何东西一样,默认代码页也可能是不包含中文字符的不合适语言。

有一个功能SetConsoleOutputCP来更改控制台的代码页。目前还不清楚这个函数是改变了实际控制台窗口使用的代码页,还是只影响了程序中的Unicode转换。