如何在读取CSV时指定编码格式?

Ema*_*o78 1 csv utf-8 go

我正在写一个包来读取Go中的CSV文件,我需要打开可以用不同格式编码的CSV文件(例如UTF8,Latin1或其他格式).有没有办法指定要读取的CSV文件的编码格式?

pet*_*rSO 5

包csv

import "encoding/csv"
Run Code Online (Sandbox Code Playgroud)

func NewReader

func NewReader(r io.Reader) *Reader
Run Code Online (Sandbox Code Playgroud)

NewReader返回一个从r读取的新Reader.


提供一个io.Readercsv.NewReader映射CSV文件的字符集为Unicode UTF-8.

例如,

import (
    "encoding/csv"

    "golang.org/x/text/encoding/charmap"
)

file, err := os.Open(filename)
if err != nil {
    return err
}
defer file.Close()
rdr := csv.NewReader(charmap.ISO8859_15.NewDecoder().Reader(file))
Run Code Online (Sandbox Code Playgroud)

  • 这很棒。有没有办法在读取文件之前确定编码类型?我想做的是:创建一个循环来读取可能有多种编码类型的 csv 文件:utf-8、latin-1 或其他。有没有办法预先检测 CSSV 文件的类型? (2认同)