3

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で正しいです。

4

1 に答える 1