Comment générer correctement des chaînes dans les consoles Windows à l'aide de Go
Lors de l'exécution d'un programme Go qui imprime des chaînes codées en UTF-8 dans une fenêtre de console sous Windows, la sortie peut sembler tronquée en raison des différences dans les normes de codage. Windows utilise généralement le codage IBM850, tandis que Go utilise UTF-8 par défaut.
Pour résoudre ce problème et garantir que les chaînes sont imprimées correctement dans une fenêtre de console :
Utilisez la fonction consolePrintString :
Le code fourni définit une fonction appelée consolePrintString qui utilise des méthodes non documentées mais efficaces pour gérer la sortie de chaîne dans un environnement spécifique à Windows. environnement.
Convertir UTF-8 en UTF-16 :
Dans la fonction consolePrintString, la chaîne UTF-8 d'entrée est convertie en UTF-16 à l'aide de la fonction Encode à partir du paquet unicode/utf16. UTF-16 est le codage préféré pour la sortie de la console.
Écrire dans la console :
La fonction WriteConsoleW de la bibliothèque kernel32.dll est utilisée pour écrire l'UTF-16. chaîne à la console. Il prend des paramètres qui spécifient le handle de la console, l'adresse des données de la chaîne, la longueur de la chaîne et un pointeur pour enregistrer le nombre de caractères écrits.
Exemple d'utilisation :
Dans la fonction principale fournie, deux chaînes sont imprimées à l'aide de la fonction consolePrintString : "Hello ☺" et "éèïöîôùòèìë". Ces chaînes devraient maintenant s'afficher correctement dans la fenêtre de la console.
Remarque :
Cette méthode utilise des API non documentées et ne gère pas divers scénarios, tels que la redirection stdout ou l'erreur. manutention. Utilisez-le avec prudence et en comprenant ses limites.
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!