Heim  >  Artikel  >  Backend-Entwicklung  >  Golang gibt verstümmelte chinesische Zeichen aus

Golang gibt verstümmelte chinesische Zeichen aus

王林
王林Original
2023-05-10 13:10:391301Durchsuche

Wenn bei der Golang-Entwicklung die Ausgabecodierung nicht festgelegt ist, kann das Problem verstümmelter chinesischer Zeichen auftreten. Im Folgenden werde ich vorstellen, wie das Problem der Golang-Ausgabe chinesischer verstümmelter Zeichen unter zwei Aspekten gelöst werden kann: dem Prinzip der Ausgabecodierung und dem Festlegen der Ausgabecodierung.

1. Prinzip der Ausgabekodierung

In Golang werden alle Zeichenfolgen in UTF-8-Kodierung gespeichert, einschließlich chinesischer Zeichen. UTF-8 ist eine Unicode-Kodierung variabler Länge, die jedes Zeichen im Unicode-Standard darstellen kann. Daher werden die chinesischen Schriftzeichen, die wir in Golang-Programmen verwenden, tatsächlich in Form der UTF-8-Codierung im Speicher gespeichert.

Wenn wir ein in Golang geschriebenes Programm an ein Terminal, eine Datei, eine Webseite oder ein anderes Ausgabegerät ausgeben müssen, müssen wir die UTF-8-Kodierung in die Zielkodierung konvertieren. Typischerweise verwendet ein Terminal oder Dateiausgabegerät standardmäßig die lokale Kodierung zur Textausgabe. Beispielsweise verwendet das Windows-Betriebssystem standardmäßig die GBK-Kodierung und das Linux-Betriebssystem standardmäßig die UTF-8-Kodierung.

Wenn die UTF-8-Kodierung des Golang-Programms bei der Ausgabe nicht korrekt konvertiert wird, können verstümmelte chinesische Zeichen erscheinen. Dies liegt daran, dass die Zielkodierung chinesische Zeichen in der UTF-8-Kodierung nicht richtig erkennen kann, was dazu führt, dass der Ausgabetext nicht korrekt angezeigt wird.

Um das Problem zu lösen, dass Golang chinesische verstümmelte Zeichen ausgibt, müssen wir daher die Ausgabekodierung so einstellen, dass die Zielkodierung UTF-8-kodierte chinesische Zeichen korrekt erkennen kann.

2. Legen Sie die Ausgabekodierung fest

In Golang variiert die Methode zum Festlegen der Ausgabekodierung je nach Ausgabegerät. Im Folgenden stellen wir vor, wie Sie die Ausgabekodierung von Terminals, Dateien bzw. Webseiten festlegen.

  1. Festlegen der Terminal-Ausgabekodierung

Verwenden Sie in Golang die Println-Methode des fmt-Pakets, um eine Zeichenfolge an das Terminal auszugeben. Wenn Sie die Ausgabekodierung des Terminals festlegen müssen, können wir die Fprintln-Methode des os.Stdout-Attributs verwenden und die Formatierungsparameter festlegen.

Stellen Sie unter Windows beispielsweise die Terminal-Ausgabekodierung wie folgt auf GBK-Code ein:

package main

import (
    "fmt"
    "os"
)

func main() {
    stdout := os.Stdout

    fmt.Println("Hello 世界!")
}

Verwenden Sie dann die Println-Methode des fmt-Pakets, um die UTF-8-kodierte chinesische Zeichenfolge „Hello World!“ auszugeben. Das Ergebnis der Terminalausgabe sollte lauten: Erstellen Sie mit dem Bufio-Paket einen gepufferten Datei-Importer, mit dem Sie die Codierung der Ausgabedatei festlegen können.

Unter einem Windows-System lautet der Code zum Festlegen der Ausgabedateikodierung auf GBK beispielsweise wie folgt:

123
Hello 世界!
    Im obigen Code verwenden wir zunächst die Create-Methode des Betriebssystempakets, um die Ausgabedatei „output.txt“ zu erstellen. und verwenden Sie die defer-Anweisung, um das Schließen des Dateihandles zu verzögern.
  1. Führen Sie den obigen Code aus und überprüfen Sie den Inhalt der Datei „output.txt“. Es sollte lauten:
package main

import (
    "bufio"
    "os"
)

func main() {
    file, err := os.Create("output.txt")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    writer := bufio.NewWriter(file)

    writer.WriteString("Hello 世界!")
    writer.Flush()
}

Stellen Sie die Ausgabekodierung der Webseite ein

Verwenden Sie in Golang die Writer-Schnittstelle des Net/http-Pakets, um das zu implementieren Schreibmethode der Klasse ResponseWriter zur Ausgabe einer HTTP-Antwort.

Wenn Sie die Ausgabecodierung der Webseite festlegen müssen, müssen wir zuerst das Content-Type-Attribut des HTTP-Antwortheaders festlegen und dann die Write-Methode verwenden, um UTF-8-codierten Text auszugeben.

    Unter Windows lautet der Code zum Festlegen der Webseiten-Ausgabekodierung auf GBK beispielsweise wie folgt:
  1. 123
    Hello 世界!
  2. Im obigen Code verwenden wir zunächst die HandleFunc-Methode des net/http-Pakets, um die HTTP-Anforderungsverarbeitung zu registrieren Funktion. Setzen Sie beim Zugriff auf den Stammpfad das Content-Type-Attribut des HTTP-Antwortheaders auf „text/html; charset=gbk“ und verwenden Sie dann die WriteString-Methode des io-Pakets, um den HTML-Text „100db36a723c770d327fc0aef2ce13b12491da9252823faee287d81e7ff943cfb0cf166b29c794cd7527b4a311bef2e99c3bca370b5104690d9ef395f2c5f8d16c04bd5ca3fcae76e30b72ad730ca86dHallo Welt! 36cc49f0c466276486e50c850b7e495673a6ac4ed44ffec12cee46588e518a5e", beachten Sie, dass es ein

    Abschließend verwenden wir die ListenAndServe-Methode des http-Pakets, um den HTTP-Server zu starten und den lokalen Port 8080 abzuhören.

    Führen Sie den obigen Code aus und besuchen Sie http://localhost:8080. Sie sollten „Hello world!“ sehen können. Der Text wird auf der Webseite angezeigt und der Zeichensatz der Webseite ist auf GBK eingestellt. Wenn der Zeichensatzparameter auf UTF-8 geändert wird, werden verstümmelte chinesische Zeichen angezeigt.

    Zusammenfassung

    Um das Problem zu vermeiden, dass Golang-Programme verstümmelte chinesische Zeichen ausgeben, müssen wir die Ausgabekodierung bei der Ausgabe korrekt einstellen. Für unterschiedliche Ausgabegeräte müssen wir unterschiedliche Einstellungsmethoden verwenden. Für die Ausgabe im Terminal müssen wir die Fprintln-Methode von os.Stdout verwenden und die Formatierungsparameter für die Ausgabe in einer Datei festlegen. Für die Ausgabe in einer Datei müssen wir die WriteString-Methode des gepufferten Dateischreibers verwenden Auf der Webseite müssen wir das Content-Type-Attribut des HTTP-Antwortheaders festlegen und die Write-Methode des Antwortschreibers verwenden, um den HTML-Text auszugeben.

    Das obige ist der detaillierte Inhalt vonGolang gibt verstümmelte chinesische Zeichen 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
Vorheriger Artikel:Wie wäre es mit Golang?Nächster Artikel:Wie wäre es mit Golang?