Avec la large application des fichiers CSV dans l'échange de données, de plus en plus de développeurs ont commencé à prêter attention à la lecture et à l'écriture de fichiers CSV. En tant qu'excellent langage, Golang fournit naturellement sa propre bibliothèque CSV pour permettre aux développeurs de lire et d'écrire des fichiers CSV. Cependant, lorsque les développeurs utilisent Golang pour lire des fichiers CSV, ils rencontrent parfois des caractères tronqués. Cet article explique comment résoudre le problème des fichiers CSV tronqués dans Golang.
Les fichiers CSV sont des fichiers texte brut et peuvent être encodés de différentes manières, telles que UTF-8, GBK, GB2312, etc. Dans Golang, le codage UTF-8 est utilisé par défaut lors de la lecture des fichiers CSV, donc si le fichier CSV utilise d'autres formats de codage, des caractères tronqués peuvent apparaître.
Pour le problème des fichiers CSV tronqués, il existe les solutions suivantes :
2.1 Spécifier l'encodage du fichier
Vous pouvez éviter le problème de l'altération en définissant l'encodage du fichier CSV. En prenant l'encodage GBK comme exemple, le code est le suivant :
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) }
Vous pouvez voir que la fonction ReadFile
est utilisée dans le code pour lire le fichier CSV, et l'encodage du fichier est spécifié en définissant NouveauDécodeur pour 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) }
可以看到,代码中使用gocsv
go-csv
, vous pouvez définir la méthode d'encodage lors de la lecture des fichiers CSV : gocsv
est utilisée dans le code pour lire les fichiers CSV Dans le même temps, l'encodage du fichier est défini sur GBK lors de l'analyse. 🎜Résumé🎜🎜🎜Le problème de fichier CSV tronqué n'est pas rare dans Golang, mais en spécifiant l'encodage de fichier et en utilisant des bibliothèques tierces, nous pouvons facilement éviter ce problème. Si vous rencontrez également le problème des fichiers CSV tronqués, vous pouvez essayer les deux solutions ci-dessus. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!