Maison > développement back-end > Golang > le corps du texte

Comment générer correctement des chaînes UTF-8 dans une console Windows avec Go ?

Linda Hamilton
Libérer: 2024-11-01 10:55:02
original
837 Les gens l'ont consulté

How to Correctly Output UTF-8 Strings in a Windows Console with Go?

Sortir correctement des chaînes 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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!