Windows で UTF-8 文字列を「std::cout」に正しく出力するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-10-31 07:36:01
オリジナル
337 人が閲覧しました

How to Output UTF-8 Strings Correctly to `std::cout` on Windows?

Windows 上の C での UTF-8 文字列の処理

文字列を UTF-8 でエンコードすることは、クロスプラットフォーム アプリケーションで広く使用されています。ただし、Windows で UTF-8 文字列を std::cout に出力するには、特有の課題があります。

Windows のデフォルトの動作では、std::cout は非 Unicode 形式の文字列を期待します。 UTF-8 文字列が表示されると、破損した文字が表示されます。

この問題に対処するには、主に 2 つの手順があります:

  1. コンソール コード ページを UTF-8 に設定する: SetConsoleOutputCP 関数を使用して、受信バイト ストリームが UTF-8 でエンコードされていることをコンソールに通知します。
  2. ストリーム バッファリングを有効にする: Visual の std::basic_filebuf のデフォルト動作を無効にします。 Studio。UTF-8 バイト シーケンスを分解し、個々のバイトとして渡します。これを克服するために、setvbuf はストリーム バッファリングを有効にし、文字列全体が全体として渡されるようにします。

これらの解決策を組み込んだ改訂されたコード スニペットを次に示します。

さらにこれらの手順では、Windows コンソールのラスター フォントでは非 ASCII Unicode 文字が正しく表示されない可能性があることに注意してください。適切なレンダリングを有効にするには、Windows 10 以降のバージョンのデフォルトとなっている TrueType フォントに切り替えることをお勧めします。

以上がWindows で UTF-8 文字列を「std::cout」に正しく出力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!