Maison > Article > développement back-end > Comment générer correctement des chaînes UTF-8 dans une console Windows avec Go ?
Lors de la création d'un exécutable Go qui génère des chaînes codées en UTF-8 avec des caractères spéciaux, il est important de prendre en compte l'encodage par défaut utilisé par les consoles Windows, qui est IBM850 (page de codes 850). Cela peut entraîner une sortie mutilée en raison d'encodages de caractères incorrects.
Pour garantir une sortie correcte dans une console Windows, l'approche suivante peut être implémentée :
<code class="go">package main import ( "syscall" "unsafe" "unicode/utf16" ) // Retrieve a function pointer from the kernel32.dll library. var procWriteConsoleW = syscall.NewProc("WriteConsoleW") // Custom function to print strings directly to the console. func consolePrintString(strUtf8 string) { // Encode the string into UTF-16 for Windows console compatibility. var strUtf16 []uint16 strUtf16 = utf16.Encode([]rune(strUtf8)) if len(strUtf16) < 1 { return } // Initialize the number of characters written to zero. var charsWritten uint32 = 0 // Call WriteConsoleW to print the UTF-16 string to the console. 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() { // Example strings to output to the console. consolePrintString("Hello ☺\n") consolePrintString("éèïöîôùòèìë\n") }</code>
En appelant notre fonction consolePrintString personnalisée, les chaînes sont imprimées directement sur la console en utilisant le codage de caractères correct, garantissant la sortie attendue des caractères spéciaux.
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!