Maison > développement back-end > C++ > le corps du texte

Comment sortir correctement les chaînes UTF-8 vers « std :: cout » sous Windows ?

Susan Sarandon
Libérer: 2024-10-31 07:36:01
original
337 Les gens l'ont consulté

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

Traitement des chaînes UTF-8 en C sous Windows

L'encodage des chaînes au format UTF-8 est largement utilisé pour les applications multiplateformes. Cependant, la sortie de chaînes UTF-8 vers std::cout sous Windows présente des défis uniques.

Le comportement par défaut sous Windows est que std::cout s'attend à des chaînes dans des formats non Unicode. Lorsqu'il est présenté avec des chaînes UTF-8, il affiche des caractères corrompus.

Pour résoudre ce problème, il existe deux étapes principales :

  1. Définissez la page de codes de la console sur UTF-8. : À l'aide de la fonction SetConsoleOutputCP, informez la console que le flux d'octets entrant est codé en UTF-8.
  2. Activer la mise en mémoire tampon de flux : Désactivez le comportement par défaut de std::basic_filebuf dans Visual Studio, qui décompose les séquences d'octets UTF-8 et les transmet sous forme d'octets individuels. Pour surmonter ce problème, setvbuf active la mise en mémoire tampon du flux, garantissant que la chaîne entière est transmise dans son ensemble.

Voici un extrait de code révisé qui intègre ces solutions :

<code class="cpp">#include <string>
#include <iostream>
#include <Windows.h>
#include <cstdio>

int main() {
    // Set console code page to UTF-8
    SetConsoleOutputCP(CP_UTF8);

    // Enable buffering to prevent byte-by-byte transmission
    setvbuf(stdout, nullptr, _IOFBF, 1000);

    // Output UTF-8 string
    std::string test = u8"Greek: αβγδ; German: Übergrößenträger";
    std::cout << test << std::endl;

    return 0;
}</code>
Copier après la connexion

De plus À ces étapes, notez que les polices raster de la console Windows peuvent ne pas afficher correctement les caractères Unicode non-ASCII. Pour permettre un rendu correct, il est recommandé de passer à une police TrueType, qui est désormais la police par défaut dans Windows 10 et versions ultérieures.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!