Heim  >  Artikel  >  Backend-Entwicklung  >  Wie gebe ich UTF-8-Strings in einer Windows-Konsole mit Go korrekt aus?

Wie gebe ich UTF-8-Strings in einer Windows-Konsole mit Go korrekt aus?

Linda Hamilton
Linda HamiltonOriginal
2024-11-01 10:55:02833Durchsuche

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

Korrekte Ausgabe von Zeichenfolgen in einer Windows-Konsole mit Go

Beim Erstellen einer ausführbaren Go-Datei, die UTF-8-codierte Zeichenfolgen mit Sonderzeichen ausgibt, ist es wichtig, die Standardcodierung zu berücksichtigen wird von Windows-Konsolen verwendet, nämlich IBM850 (Codepage 850). Dies kann aufgrund falscher Zeichenkodierungen zu einer fehlerhaften Ausgabe führen.

Um eine ordnungsgemäße Ausgabe in einer Windows-Konsole sicherzustellen, kann der folgende Ansatz implementiert werden:

<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>

Durch Aufrufen unserer benutzerdefinierten ConsolePrintString-Funktion Zeichenfolgen werden mit der richtigen Zeichenkodierung direkt auf der Konsole ausgegeben, um die erwartete Ausgabe von Sonderzeichen sicherzustellen.

Das obige ist der detaillierte Inhalt vonWie gebe ich UTF-8-Strings in einer Windows-Konsole mit Go korrekt aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn