クロスプラットフォーム C アプリケーションで UTF-8 でエンコードされた文字列を操作する場合、問題が発生する可能性がありますWindows システム上で std::cout に出力しようとしたとき。デフォルトでは、std::cout は 8 ビット文字列が Latin-1 または同様の非 Unicode 形式であることを想定しているため、UTF-8 文字列の出力が文字化けします。
Windows でこの問題に対処するには、いくつかの方法があります。
コンソール コード ページを UTF-8 に設定する:
SetConsoleOutputCP(CP_UTF8);
この関数は、 Windows コンソールは、受信したバイト ストリームを UTF-8 として解釈します。
Visual Studio STL でのストリーム バッファリングの問題の解決:
setvbuf(stdout) 、nullptr、_IOFBF、1000);
この回避策はストリームのバッファリングを有効にし、STL コードが UTF-8 バイト シーケンスを個別のバイトとしてコンソールに送信するのを防ぎます。
TrueType フォントが使用されていることを確認する:
TrueType フォントは Unicode 文字をサポートしますが、ラスター フォントはコンソール コード ページを無視します。 Windows 10 では、Consolas がデフォルトのフォントとして使用されますが、Windows 7 では、非 ASCII Unicode 文字を正しく表示するには、手動で TrueType フォントに変更する必要がある場合があります。
以上がWindows で std::cout を使用して正しい UTF-8 出力を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。