golang csv parse error on line 1, column 1: bare " in non-quoted-field

Python014

golang csv parse error on line 1, column 1: bare " in non-quoted-field,第1张

根据需求做一个csv报表数据导入入库功能,运行多天突然运维告知导入数据有问题,有问题那就排查呗。。。

题外话:这个问题足足浪费了我2天时间,期间还出了其他的一些问题着实让我抓狂,另外这篇文章希望能帮到你,不要在采坑了!!!

说在前面,这个csv表格数据是有中文的。ok继续

通过日志打点发现了以下错误

找了一圈,着实头痛,我也知道中文需要做处理转化这个我已经做了,并且已经明确是utf-8了通过标准库方法进行判断的还是报错。着实让我摸不着头脑。判断utf-8方法如下

ok,最后借助了百度,google找了一大圈功夫不负有心人,最后发现utf-8还有 utf-8 bom 这种编码格式,我想骂娘。。。至于编码规则啥的就不详细说了,有兴趣自行百度吧。

解决方案如下:

至于其他编码方式以及转换可以查看golang官方扩展库 golang.org/x/text/encoding 库中的源码。

https://stackoverflow.com/questions/31326659/golang-csv-error-bare-in-non-quoted-field

https://github.com/golang/go/issues/21672

https://zasy.github.io/2018/09/28/tx-06/

一个用golang的无名小卒

完~

仅为个人阅读时遇到的困惑的理解

2021.6.16

《GO语言圣经》-《GO程序设计语言》

P3

在命令行中运行 go run main.go 123

会输出 123

在命令行中分别输入(注意空格

(1) go run main.go 123

(2) go run main.go 1 2 3

(1)中输出结果

第一行是go命令的位置

第二行是for循环内的“一个参数”的结果

第三行是for循环外的最终结果

(2)中输出结果

第二行是for循环内“第一个参数”的结果

第三行是for循环内“第一个和第二个参数”的结果

以此类推。

(3)如果空格大于一个,仍会以一个空格输出

这时我才理解到书中所讲述的:

也就是以空格分隔代表新的一个参数。