如果我想在Windows上进行以下工作,那么正确的语言环境是什么?如何检测它实际存在: 此代码是通用的,还是仅仅是我的系统?
为了让这个工作:
#define UNICODE
#define _UNICODE
#include <wchar.h>
int main()
{
wprintf(L"Hello World!\n");
wprintf(L"£?, ?, ?!\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
使用visual studio 2008 express(在windows xp上,如果重要的话).当我从命令提示符(启动为cmd/u,它应该启用unicode?)运行时,我得到这个:
C:\dev\unicodevs\unicodevs\Debug>unicodevs.exe Hello World! ?ú? C:\dev\unicodevs\unicodevs\Debug>
鉴于终端没有用于渲染它们的字体,我认为这是预期的.但是,即使我尝试这个,我得到的是:
C:\dev\unicodevs\unicodevs\Debug>cmd /u /c "unicodevs.exe > output.txt"
生成的文件(即使其UTF-8编码)如下所示:
Hello World! 壓
源文件本身被定义为unicode(以UTF-8编码,没有BOM).构建时的编译器输出:
1>------ Rebuild All started: Project: unicodevs, Configuration: Debug Win32 ------ 1>Deleting intermediate and output files for project 'unicodevs', configuration 'Debug|Win32' 1>Compiling... 1>main.c 1>.\main.c(1) : warning C4005: 'UNICODE' : macro redefinition 1> command-line arguments : …