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() }
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 世界!