Lorsque vous travaillez avec des chaînes codées en UTF-8 dans une application C multiplateforme, des problèmes peuvent survenir lorsque vous essayez de les imprimer sur std::cout sur les systèmes Windows. Par défaut, std::cout s'attend à ce que les chaînes de 8 bits soient au format Latin-1 ou dans un format similaire non Unicode, ce qui entraîne une sortie tronquée pour les chaînes UTF-8.
Pour résoudre ce problème sous Windows, plusieurs des approches peuvent être adoptées :
Définition de la page de code de la console sur UTF-8 :
SetConsoleOutputCP(CP_UTF8);
Cette fonction indique au Console Windows pour interpréter le flux d'octets qu'elle reçoit comme UTF-8.
Résolution du problème de mise en mémoire tampon de flux dans Visual Studio STL :
setvbuf(stdout , nullptr, _IOFBF, 1000);
Cette solution de contournement active la mise en mémoire tampon du flux, empêchant le code STL d'envoyer des séquences d'octets UTF-8 sous forme d'octets individuels à la console.
Assurer l'utilisation de la police TrueType :
Les polices TrueType prennent en charge les caractères Unicode, tandis que les polices raster ignorent les pages de codes de la console. Windows 10 utilise Consolas comme police par défaut, mais dans Windows 7, les utilisateurs devront peut-être passer manuellement à une police TrueType pour afficher correctement les caractères Unicode non-ASCII.
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!