异常情况。在1:2处有意外的引号(CSV::MalformedCSVError) Crystal
在试图解析一个亚马逊支付文件时,我偶然发现了这个特别的问题。
异常。在1:2处有意外的引用(CSV::MalformedCSVError)。
原因是什么?亚马逊支付将其文件以UTF-8编码,并带有BOM。BOM是一个可选的(在UTF-8文件中)标记。你可以用工具xxd来查看,例如
xxd apolish_amazon_2018DecMonthlyTransaction.csv | less
文件开头的三个点是BOM。(EF BB BF in Hex)。
处理BOM的问题
不幸的是,设置不同的文件编码不会有帮助,因为iconv似乎会将BOM传给你而不改变。
没有什么 "特殊 "的编码变化,你可以使用,见 我在这里列出了图标V的清单.
因此,我们需要通过读取三个字节来删除它。
apf = File.open(my_filename)
弃置 = apf.get(3)
puts (disard.expect)
apf.set_encoding("UTF-8", nil)。