Heim > Artikel > Backend-Entwicklung > Golang gibt verstümmelte chinesische Zeichen aus
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.
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 世界!
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.
123 Hello 世界!
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!