写爬虫出现invalid character 'ï' looking for beginning of value

zmisgod 发布于 2019-3-12 21:56:53 阅读 122 评论 0

今天写golang爬虫的脚本,突然golang报出这个错误

invalid character 'ï' looking for beginning of value

上网上找了下,原来是因为BOM导致的原因。

BOM全称byte-order mark,之前我在第一家公司的时候也遇到过UTF8文件中夹带BOM头,导致PHP解析文件乱码,当时我我们找问题找了半天,最后发现了这个问题,是因为当时的小伙伴没有用UTF8字符集编辑器编辑了PHP代码并上传至了服务器导致的。

今天这个问题也是如此,因为我爬的这个网站应该也是有BOM头,导致我这边解析JSON的时候,前三个byte为[]byte{239, 187, 191}导致调用json.Unmarshal函数的时候解析不出json的数据结构,解决方法只需要将[]byte{239, 187, 191}这三个byte去掉即可。

即:

body = bytes.TrimPrefix(body, []byte("\xef\xbb\xbf"))

StackOverflow的原话

The error referring to ï is because the UTF-8 BOM interpreted as an ISO-8859-1 string will produce the characters