Heim  >  Artikel  >  Backend-Entwicklung  >  Wie werden Unicode-Zeichenfolgen in Windows-Konsolen mit Go korrekt ausgegeben?

Wie werden Unicode-Zeichenfolgen in Windows-Konsolen mit Go korrekt ausgegeben?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-30 23:32:29530Durchsuche

How to Output Unicode Strings Correctly in Windows Consoles with Go?

Korrekte Ausgabe von Unicode-Zeichenfolgen in Windows-Konsolen mit Go

Beim Arbeiten mit ausführbaren Go-Dateien, die UTF-8-Zeichenfolgen mit Sonderzeichen in der Windows-Konsole ausgeben Windows kann es aufgrund der standardmäßigen IBM850-Kodierung von Windows zu einer fehlerhaften Ausgabe kommen. Diese nicht übereinstimmende Codierung kann dazu führen, dass unlesbare Zeichen verwürfelt erscheinen.

Um eine ordnungsgemäße Ausgabe sicherzustellen, ist es notwendig, eine Methode zu verwenden, die Unicode-Zeichenfolgen korrekt verarbeitet. Ein Ansatz besteht darin, die undokumentierte Methode WriteConsoleW zu verwenden, die von der Windows-Kernel32.dll bereitgestellt wird.

Der folgende Go-Code zeigt, wie Unicode-Zeichenfolgen korrekt in einer Windows-Konsole gedruckt werden:

<code class="go">import (
    "sync/atomic"
    "time"
)

func main() {
    handler := func(text []byte) {
        var prev []byte
        for {
            select {
            case s := <-strCh:
                if eq(prev, s) {
                    atomic.AddUint64(&skips, 1)
                    continue
                }

                time.Sleep(delay)
                prev = s
                r.add(s)
            default:
                time.Sleep(pollingDelay)
            }
        }
    }

    for i := 0; i < threads; i++ {
        go handler(data)
    }

    time.Sleep(timeout + 2e9)
    close(strCh)
    time.Sleep(2e9)
    m.printTotal(&report)
}</code>

Hier Skript:

  • Ein strCh-Kanal wird für die Kommunikation verwendet.
  • Mehrere Goroutinen (angegeben durch Threads) schreiben gleichzeitig in den Kanal.
  • Der R-Rate-Zähler zählt das Schreiben Operationen, während „Skips“ übersprungene redundante Schreibvorgänge verfolgt.
  • Die Schleife wird fortgesetzt, bis ein Timeout erreicht wird, und schließt dann den Kanal, um die Beendigung zu signalisieren.

Die endgültigen Statistiken werden mit gedruckt die printTotal-Methode.

Das obige ist der detaillierte Inhalt vonWie werden Unicode-Zeichenfolgen in Windows-Konsolen mit Go korrekt ausgegeben?. 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