"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment sortir correctement les chaînes UTF-8 vers « std :: cout » sous Windows ?

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

Publié le 2024-11-12
Parcourir:731

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

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

L'encodage des chaînes car 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éfinir 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 le flux Buffering : 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 :

#include 
#include 
#include 
#include 

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 

En plus de ces étapes, notez que les polices raster de la console Windows peuvent ne pas afficher correctement les caractères Unicode non-ASCII. Pour activer 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.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3