ホームページ  >  記事  >  バックエンド開発  >  Windows コンソールで UTF-8 文字列を正しく表示する方法: 包括的なガイド?

Windows コンソールで UTF-8 文字列を正しく表示する方法: 包括的なガイド?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-29 18:41:03343ブラウズ

How to Display UTF-8 Strings Correctly on Windows Console: A Comprehensive Guide?

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 コンソールには依然としてレガシーな問題があることに注意することが重要です。

  • ラスター フォント: これらのフォントはコンソールのコード ページを無視するため、非 ASCII には TrueType フォントを使用する必要があります。 Unicode 文字。
  • Windows 7 のデフォルト フォント: Windows 10 までは、デフォルト フォントはラスター フォントであり、TrueType フォントへの手動構成が必要でした。

コードとコンテキストの両方を組み込んだこの改訂された回答は、Windows で UTF-8 文字列を印刷するための包括的な段階的なソリューションを提供し、歴史と現代の両方の考慮事項に対処します。

以上がWindows コンソールで UTF-8 文字列を正しく表示する方法: 包括的なガイド?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。