今天上传文件时遇到一个眼睛看不出来的异常,代码如下
if (StringUtils.equals("seller-sku",titles[i])) {
sellerSkuIndex = i;
indexMap.put("seller-sku", i);
}
debug此处时 titles[0] 的值显示为"seller-sku" 但if条件一直返回false,
文件中第一个字符串是’seller-sku’,但是Java读取后前面多了两个乱码.
后来查找发现存在bom的情况:
BOM是Unicode规范中推荐的标记字节顺序的方法。通常为:\uFEFF
所以在处理之前先将BOM除去:
String title_line = br.readLine();
if(title_line.startsWith("\uFEFF")){
title_line = title_line.replace("\uFEFF", "");
}
貌似 commons-io 包里面的new BOMInputStream()可以直接处理这个问题 ,不过目前项目没有引用这个包 我也就没尝试,先记录下 .