2

重複の可能性:
Windows コンソールで Unicode 文字列を出力する方法

win32console アプリケーションで UTF-16 文字をコンソールに出力しようとしましたが、出力ストリームのエンコーディングを変更できません。 SetConsoleOutputCP() 関数を使用しようとしましたが、次のコードをテストに使用するとき

    std::wcout << GetConsoleOutputCP() << std::endl;//output 866
    SetConsoleOutputCP(CP_WINUNICODE);              //if i set CP_UTF8 it works
    std::wcout << GetConsoleOutputCP() << std::endl;//output 866

2 つのケースで同じ結果 (866) が得られます。正しく動作するように設定しようとするとCP_UTF8、UTF-16 が必要なのですが、失敗したのはなぜですか? また、出力ストリームのエンコーディングを UTF-16 に設定するにはどうすればよいですか?

4

1 に答える 1

2

coutとの両方wcoutが同じバイト指向ストリーム (STD_OUTPUT_HANDLE) に書き込み、バイト指向エンコーディングのみがサポートされているため、エンコーディングを UTF-16 に設定することはできません。UTF-16 は単語指向です。これは、標準出力に書き込むことができる唯一の Unicode エンコーディングが UTF-8 であることを意味します。

于 2012-10-24T15:05:47.420 に答える