Maison > développement back-end > Golang > Comment afficher correctement les chaînes UTF-8 dans les consoles Windows ?

Comment afficher correctement les chaînes UTF-8 dans les consoles Windows ?

DDD
Libérer: 2024-11-02 21:55:30
original
613 Les gens l'ont consulté

How to Display UTF-8 Strings Correctly in Windows Consoles?

Encodage des chaînes UTF-8 pour l'affichage dans les consoles Windows

Lors de l'exécution d'un exécutable Go dans une console Windows, des chaînes avec des caractères spéciaux peuvent apparaître mutilé en raison de l'encodage IBM850 par défaut de la console. Voici comment vous assurer que les chaînes sont correctement encodées et affichées :

Solution :

Utilisez la fonction WriteConsoleW de la bibliothèque kernel32.dll pour écrire des caractères larges (UTF-16 ) chaînes directement sur la console, en contournant l'encodage par défaut.

Implémentation :

<code class="go">import (
    "syscall"
    "unicode/utf16"
    "unsafe"
)

// Declare the WriteConsoleW function
var procWriteConsoleW = syscall.NewLazyDLL("kernel32.dll").NewProc("WriteConsoleW")

// Define a function to print a UTF-8 string to the console
func consolePrintString(strUtf8 string) {
    // Convert the UTF-8 string to UTF-16
    strUtf16 := utf16.Encode([]rune(strUtf8))

    // Write 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(nil)),
        uintptr(0),
        0)
}</code>
Copier après la connexion

Exemple :

<code class="go">package main

import "fmt"

func main() {
    consolePrintString("Hello ☺\n")
    consolePrintString("éèïöîôùòèìë\n")
}</code>
Copier après la connexion

Cette approche contourne l'encodage par défaut de la console, garantissant que les chaînes contenant des caractères spéciaux sont correctement affichées. Veuillez noter qu'il est spécifique à Windows et implique l'utilisation de méthodes non documentées.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal