原因: windos中的utf-8是UTF-8 BOM编码,文本首行有非法字符
在WINDOWS自带的记事本中,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。
- 可以通过代码测试发现首行有非法字符
while ((line = br.readLine()) != null) {
System.out.println(line );
String[] split = line.split(",");
System.out.println(split[0] +"is digit " + split[0].matches("\\d+"));
char[] cArray = split[0].toCharArray();
for (char cc : cArray) {
System.out.println(Integer.toHexString(cc));
}
}
解决办法
将utf-8 bom 改成 utf-8就好了
我用的是notepad++。修改完后保存即可