Visual Studio 2010是否支持Unicode中的C++源代码和字符串文字中的Unicode字符

Does Visual Studio 2010 Supports C++ Source Code in Unicode with Unicode Char in String Literal

本文关键字:Unicode 字符串 文字 字符 源代码 C++ 2010 Studio 是否 支持 中的      更新时间:2023-10-16

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

例如

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

我没有中文版的Windows可供测试,所以这完全是猜测。

控制台和文件输出函数知道文件不是用UTF-16编码的,所以它们试图在输出之前将字符转换为代码页。正如默认的语言环境是"C"而不是基于系统设置的任何语言一样,默认的代码页可能也是不合适的,不包括中文字符。

有一个函数SetConsoleOutputCP用于更改控制台的代码页。目前尚不清楚此函数是否会更改实际控制台窗口使用的代码页,或者它是否只影响程序中从Unicode的转换。

测试宽文本的简单方法是跳过printf的格式化部分,直接将字符串提供给OS:WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), L" chinese characters:中文字", ...

您可能需要#pragma setlocale。