Heim > Backend-Entwicklung > Golang > Wie werden UTF-8-Zeichenfolgen in Windows-Konsolen korrekt angezeigt?

Wie werden UTF-8-Zeichenfolgen in Windows-Konsolen korrekt angezeigt?

DDD
Freigeben: 2024-11-02 21:55:30
Original
571 Leute haben es durchsucht

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

Codieren von UTF-8-Zeichenfolgen für die Anzeige in Windows-Konsolen

Beim Ausführen einer Go-Programmdatei in einer Windows-Konsole können Zeichenfolgen mit Sonderzeichen angezeigt werden aufgrund der standardmäßigen IBM850-Kodierung der Konsole verstümmelt. So stellen Sie sicher, dass Zeichenfolgen korrekt codiert und angezeigt werden:

Lösung:

Verwenden Sie die WriteConsoleW-Funktion aus der Bibliothek kernel32.dll, um Breitzeichen (UTF-16) zu schreiben ) Zeichenfolgen direkt an die Konsole unter Umgehung der Standardkodierung.

Implementierung:

<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>
Nach dem Login kopieren

Beispiel:

<code class="go">package main

import "fmt"

func main() {
    consolePrintString("Hello ☺\n")
    consolePrintString("éèïöîôùòèìë\n")
}</code>
Nach dem Login kopieren

Dieser Ansatz umgeht die Standardkodierung der Konsole und stellt so sicher, dass Zeichenfolgen mit Sonderzeichen korrekt angezeigt werden. Bitte beachten Sie, dass es Windows-spezifisch ist und die Verwendung undokumentierter Methoden beinhaltet.

Das obige ist der detaillierte Inhalt vonWie werden UTF-8-Zeichenfolgen in Windows-Konsolen korrekt angezeigt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage