下面这行代码作用是检查csv文件的第一行的第一个字段是否是time
if (!keys[0].equalsIgnoreCase("time")) {
throw new BizException("filed 'time' must in header");
}
我们传入一个csv文件,预期检查成功,但是实际却失败
image.png
debug到这里,看起来应该i是检查成功
image.png
但是当我们跟进去看
image.png
发现两者编码确实不一样,csv文件里的是
[-1, -2, 116, 0, 105, 0, 109, 0, 101, 0]
而字符串time的是
[116, 105, 109, 101]
UTF8编码中,ASCII 字符用一个字节表示,显然下面的这种是UTF8编码,
上面那种是什么格式?用notepad打开,显示是UTF8-BOM格式,但是查资料发现这种格式是在UTF8格式的文件开头加了3个前导字符EF BB BF,所以上面这种格式也不是标准的UTF8-BOM格式,我们只能怀疑这是一个被损坏的csv文件