我尝试将 UTF-8 字符串打印到 Windows 控制台。控制台代码页设置为65001(utf-8),字体设置为lucida console,c++源文件编码为utf-8,不带bom。考虑以下代码:
#include<iostream>
#include<locale>
#include<clocale>
int main(int narg, char** arg){
using namespace std;
cout<<"C++ locale: "<<cout.getloc().name()
<<"\nC locale: "<<setlocale(LC_ALL, 0)<<"\n";
cout<<"中文\n";
printf("中文\n");
return 0;
}
输出是:
C++ locale: C
C locale: C
������
中文
任何人都可以解释它并给出解决方案(使 c++ 和 c 具有相同的正确输出。)?非常感谢。
系统:win7(32位)
编译器:vs2012 express
编辑:该程序在 ubuntu12 下使用 gcc 是正确的。