Heim >Backend-Entwicklung >Golang >Wie lese ich nicht-UTF-8-codierte Textdateien in Go?

Wie lese ich nicht-UTF-8-codierte Textdateien in Go?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-01 03:29:13207Durchsuche

How to Read Non-UTF-8 Encoded Text Files in Go?

Nicht-UTF-8-Textdateien in Go lesen

In Go geht die Standardbibliothek von der UTF-8-Kodierung für alle Textdateien aus. Bei Dateien, die in anderen Zeichensätzen codiert sind, ist dies jedoch möglicherweise nicht der Fall. In diesem Artikel wird erläutert, wie Sie Nicht-UTF-8-Textdateien in Go mithilfe des Pakets golang.org/x/text/encoding lesen.

Das Paket golang.org/x/text/encoding bietet eine Schnittstelle für generische Zeichenkodierungen, die in und von UTF-8 konvertieren können. Beispielsweise stellt das Unterpaket golang.org/x/text/encoding/simplifiedchinese Encoder für GB18030, GBK und HZ-GB2312 bereit.

Beispiel:Lesen einer GBK-codierten Datei

package main

import (
    "bufio"
    "fmt"
    "log"
    "os"

    "golang.org/x/text/encoding/simplifiedchinese"
    "golang.org/x/text/transform"
)

func main() {
    const filename = "example_GBK_file"

    // Read UTF-8 from a GBK encoded file
    f, err := os.Open(filename)
    if err != nil {
        log.Fatal(err)
    }
    r := transform.NewReader(f, simplifiedchinese.GBK.NewDecoder())

    // Read converted UTF-8 from `r` as needed
    sc := bufio.NewScanner(r)
    for sc.Scan() {
        fmt.Printf("Read line: %s\n", sc.Bytes())
    }
    if err := sc.Err(); err != nil {
        log.Fatal(err)
    }
    if err = f.Close(); err != nil {
        log.Fatal(err)
    }
}

In diesem Beispiel wird ein transform.NewReader verwendet, um ein os.File-Objekt zu umschließen und Führen Sie eine On-the-Fly-Dekodierung von GBK nach UTF-8 durch.

Zusätzliche Hinweise:

  • Dieser Ansatz verwendet nur Pakete, die von den Go-Autoren bereitgestellt werden, wodurch entfällt Abhängigkeiten von Drittanbieterpaketen oder CGO.
  • Sie können die Codierungsimplementierung einfach austauschen, um andere Zeichensätze wie Big5 zu unterstützen. Windows1252 oder EUCKR.
  • Weitere Informationen finden Sie in den Paketen golang.org/x/text/encoding und golang.org/x/text/encoding/simplifiedchinese.

Das obige ist der detaillierte Inhalt vonWie lese ich nicht-UTF-8-codierte Textdateien in Go?. 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