Heim > Backend-Entwicklung > Golang > So lösen Sie das verstümmelte Problem von Golang-CSV-Dateien

So lösen Sie das verstümmelte Problem von Golang-CSV-Dateien

PHPz
Freigeben: 2023-04-03 13:46:26
Original
2085 Leute haben es durchsucht

Mit der breiten Anwendung von CSV-Dateien beim Datenaustausch achten immer mehr Entwickler auf das Lesen und Schreiben von CSV-Dateien. Als hervorragende Sprache bietet Golang natürlich eine eigene CSV-Bibliothek, um Entwicklern das Lesen und Schreiben von CSV-Dateien zu erleichtern. Wenn Entwickler jedoch Golang zum Lesen von CSV-Dateien verwenden, stoßen sie manchmal auf verstümmelte Zeichen. In diesem Artikel wird erläutert, wie das Problem verstümmelter CSV-Dateien in Golang gelöst werden kann.

  1. CSV-Dateikodierung

CSV-Dateien sind reine Textdateien und können auf verschiedene Arten kodiert werden, z. B. UTF-8, GBK, GB2312 usw. In Golang wird beim Lesen von CSV-Dateien standardmäßig die UTF-8-Kodierung verwendet. Wenn die CSV-Datei also andere Kodierungsformate verwendet, können verstümmelte Zeichen auftreten.

  1. Lösung

Für das Problem verstümmelter CSV-Dateien gibt es die folgenden Lösungen:

2.1 Dateikodierung angeben

Sie können das verstümmelte Problem vermeiden, indem Sie die Kodierung der CSV-Datei festlegen. Am Beispiel der GBK-Kodierung lautet der Code wie folgt:

package main

import (
    "encoding/csv"
    "fmt"
    "io/ioutil"
    "log"
)

func main() {
    f, err := ioutil.ReadFile("<filename>")
    if err != nil {
        log.Fatal(err)
    }

    r := csv.NewReader(transform.NewReader(bytes.NewReader(f), simplifiedchinese.GBK.NewDecoder()))
    records, err := r.ReadAll()
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(records)
}
Nach dem Login kopieren

Sie können sehen, dass die Funktion ReadFile im Code zum Lesen der CSV-Datei verwendet wird und die Dateikodierung durch Festlegen von NewDecoder für GBK. ReadFile函数读取CSV文件,同时通过设置NewDecoder的方式指定文件编码为GBK。

2.2 使用第三方库

除了自带的CSV库之外,golang中还有许多优秀的第三方CSV库可以使用。在读取CSV文件的时候,可以使用这些库来避免乱码问题。如使用go-csv库,可以在读取CSV文件时设置编码方式:

package main

import (
    "fmt"
    "github.com/gocarina/gocsv"
    "os"
)

type Record struct {
    Name string `csv:"name"`
    Age  int    `csv:"age"`
}

func main() {
    f, err := os.Open("<filename>")
    if err != nil {
        fmt.Println(err)
        return
    }

    var records []Record
    if err := gocsv.Unmarshal(f, &records); err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println(records)
}
Nach dem Login kopieren

可以看到,代码中使用gocsv

2.2 Verwendung von Bibliotheken von Drittanbietern
  1. Zusätzlich zur integrierten CSV-Bibliothek stehen in Golang viele hervorragende CSV-Bibliotheken von Drittanbietern zur Verfügung. Beim Lesen von CSV-Dateien können Sie diese Bibliotheken verwenden, um verstümmelte Zeichen zu vermeiden. Wenn Sie die go-csv-Bibliothek verwenden, können Sie die Kodierungsmethode beim Lesen von CSV-Dateien festlegen:
  2. rrreee
Sie können sehen, dass die gocsv-Bibliothek im Code verwendet wird CSV-Dateien lesen Gleichzeitig wird beim Parsen die Dateikodierung auf GBK gesetzt.

🎜Zusammenfassung🎜🎜🎜Das Problem der Verstümmelung von CSV-Dateien ist in Golang keine Seltenheit, aber durch Angabe der Dateikodierung und Verwendung von Bibliotheken von Drittanbietern können wir dieses Problem leicht vermeiden. Wenn auch Sie auf das Problem verstümmelter CSV-Dateien stoßen, können Sie die beiden oben genannten Lösungen ausprobieren. 🎜

Das obige ist der detaillierte Inhalt vonSo lösen Sie das verstümmelte Problem von Golang-CSV-Dateien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage