Maison > Article > développement back-end > Comment imprimer correctement les chaînes UTF-8 dans une console Windows à l'aide de Go ?
Problème :
Lors de l'utilisation d'un exécutable Go pour imprimer des chaînes UTF-8 dans une console Windows, les utilisateurs peuvent rencontrer une sortie mutilée en raison du codage IBM850 par défaut de la console. Cela peut entraîner un affichage incorrect des caractères spéciaux.
Solution :
Pour garantir une sortie de chaîne précise dans une console Windows, utilisez le code suivant :
<code class="go">// Alert: This method utilizes undocumented methods and does not handle stdout redirection or error checking. // Use with caution. package main import ( "syscall" "unicode/utf16" "unsafe" ) var modkernel32 = syscall.NewLazyDLL("kernel32.dll") var procWriteConsoleW = modkernel32.NewProc("WriteConsoleW") func consolePrintString(strUtf8 string) { strUtf16 := utf16.Encode([]rune(strUtf8)) if len(strUtf16) == 0 { return } var charsWritten *uint32 syscall.Syscall6(procWriteConsoleW.Addr(), 5, uintptr(syscall.Stdout), uintptr(unsafe.Pointer(&strUtf16[0])), uintptr(len(strUtf16)), uintptr(unsafe.Pointer(charsWritten)), uintptr(0), 0) } func main() { consolePrintString("Hello ☺\n") consolePrintString("éèïöîôùòèìë\n") }</code>
Ce code utilise des fonctions API Windows non documentées pour écrire des chaînes codées en UTF-16 directement sur la console, en contournant l'encodage par défaut. Cette approche garantit que les caractères spéciaux sont affichés correctement.
Utilisation :
Dans votre programme Go, vous pouvez appeler directement la fonction consolePrintString pour imprimer des chaînes codées en UTF-8 qui seront correctement affiché dans la console Windows.
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!