问题出现的背景:
程序在对外部的.csv文件进行解析操作时,第一列的属性名(A)无法进行匹配选择。而后面几列的属性名(B,C,D,E)可以正确匹配选择。
CSV文件
程序代码块
280行的代码,无法选中数组[A,B,C,D,E]中的第一个元素A。找了许多资料都没有找到合理的解释,然后在IDEA中复制了 数组[A,B,C,D,E];惊奇地发现 数字A前面有个字符串ZWNBSP
问题的解决:
通过进行了百度,通过查阅资料发现,ZWNBSP是"zero-width no-break space (ZWNBSP)"的字符。会以 “\UFEFF”作为字符串的开头;因此就可以解释清楚为什么数组的第一个元素为什么匹配不上。只需要去掉 ZWNBSP即可正确的匹配
附上解决代码
public static final String UTF8_BOM="\uFEFF";
String rowMessage =header[j];
if(rowMessage.startsWith(UTF8_BOM)) {
rowMessage=rowMessage.substring(1);
}
问题的出现原因:
该CSV文件的编码格式是 带有UTF-8-BOM,它与我们常用的UTF-8编码格式不同;区别就是在有没有BOM。即文件的开头有没有 UFEFF。这样就会造成生成数组的第一个元素,无法进行判断匹配。
参考地址:
https://www.cnblogs.com/findumars/p/3620078.html