Bagaimana untuk menyelesaikan masalah bercelaru fail CSV golang

PHPz
Lepaskan: 2023-04-03 13:46:26
asal
2016 orang telah melayarinya

Dengan aplikasi luas fail CSV dalam pertukaran data, semakin ramai pembangun telah mula memberi perhatian kepada pembacaan dan penulisan fail CSV. Sebagai bahasa yang sangat baik, Golang secara semula jadi menyediakan perpustakaan CSV sendiri untuk memudahkan pembangun membaca dan menulis fail CSV. Walau bagaimanapun, apabila pembangun menggunakan golang untuk membaca fail CSV, mereka kadangkala menghadapi aksara yang bercelaru Artikel ini akan membincangkan cara menyelesaikan masalah fail CSV yang bercelaru dalam golang.

  1. Pengekodan fail CSV

Fail CSV ialah fail teks biasa dan kaedah pengekodannya boleh pelbagai, seperti UTF-8, GBK, GB2312, dsb. Dalam golang, membaca fail CSV menggunakan pengekodan UTF-8 secara lalai, jadi jika fail CSV menggunakan format pengekodan lain, aksara bercelaru mungkin berlaku.

  1. Penyelesaian

Untuk masalah fail CSV yang bercelaru, terdapat penyelesaian berikut:

2.1 Tentukan pengekodan fail

Ya Elakkan aksara bercelaru dengan menetapkan pengekodan fail CSV. Mengambil pengekodan GBK sebagai contoh, kodnya adalah seperti berikut:

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)
}
Salin selepas log masuk

Seperti yang anda lihat, kod menggunakan fungsi ReadFile untuk membaca fail CSV dan pada masa yang sama menentukan pengekodan fail sebagai GBK dengan menetapkan NewDecoder.

2.2 Menggunakan perpustakaan pihak ketiga

Selain pustaka CSV terbina dalam, terdapat banyak perpustakaan CSV pihak ketiga yang sangat baik tersedia di golang. Apabila membaca fail CSV, anda boleh menggunakan perpustakaan ini untuk mengelakkan aksara yang bercelaru. Jika anda menggunakan pustaka go-csv, anda boleh menetapkan kaedah pengekodan semasa membaca fail 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)
}
Salin selepas log masuk

Seperti yang anda lihat, kod menggunakan pustaka gocsv untuk membaca fail CSV dan menetapkan ia apabila menghurai Pengekodan fail ialah GBK.

  1. Ringkasan

Masalah bercelaru fail CSV bukan sesuatu yang luar biasa dalam golang, tetapi dengan menyatakan pengekodan fail dan menggunakan perpustakaan pihak ketiga, kita boleh mengelakkannya dengan mudah Soalan ini. Jika anda juga menghadapi masalah fail CSV bercelaru, anda boleh mencuba dua penyelesaian di atas.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah bercelaru fail CSV golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!