UTF-8 文字列を Windows コンソールに出力しようとしています。コンソールのコード ページは 65001 (utf-8) に設定され、フォントは lucida console に設定され、C++ ソース ファイルのエンコーディングは bom なしの utf-8 です。次のコードを検討してください。
#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 エクスプレス
編集:プログラムはubuntu12の下でgccで正しいです。