Windows の UTF-8 出力: 総合ガイド
Windows では、 UTF-8 でエンコードされた文字列。 8 ビット文字列を UTF-8 として自動的に解釈する Unix システムとは異なり、Windows では同じことを行うために特定の構成が必要です。
次のコードを考えてみましょう。
<code class="cpp">#include <string> #include <iostream> int main() { std::string test = u8"Greek: αβγδ; German: Übergrößenträger"; std::cout << test; return 0; }</code>
Unix システムでは、このコードは、目的の文字を正しくレンダリングします。ただし、Windows では、std::cout のデフォルトで Latin-1 または同様の非 Unicode 形式の 8 ビット文字列が期待されるため、文字化けしたテキストが表示されます。
この問題を解決するには、Windows では 2 つの構成手順が必要です。 :
1.コンソール コード ページを UTF-8 に設定する
これは、受信するバイト ストリームを UTF-8:
<code class="cpp">SetConsoleOutputCP(CP_UTF8);</code>
2 として解釈するようにコンソールに指示します。 std::cout でのバッファリングの有効化
std::basic_filebuf の Visual Studio STL 実装では、UTF-8 シーケンスを個別のバイトとして渡すことができ、コンソールの誤った解釈につながる可能性があります。バッファリングを有効にすることで、文字列が完全に渡されるようになります。
<code class="cpp">setvbuf(stdout, nullptr, _IOFBF, 1000);</code>
これらの構成では、UTF-8 文字列が Windows コンソールに正確に表示されます。ただし、Windows コンソールには依然としてレガシーな問題があることに注意することが重要です。
コードとコンテキストの両方を組み込んだこの改訂された回答は、Windows で UTF-8 文字列を印刷するための包括的な段階的なソリューションを提供し、歴史と現代の両方の考慮事項に対処します。
以上がWindows コンソールで UTF-8 文字列を正しく表示する方法: 包括的なガイド?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。