读取文本文件时 致使的奇怪问题

项目中常常会从一些文本文件中读取数据进行业务处理,最近遇到一个问题,另一个部门提供一个txt文本给咱们进行业务处理,当咱们使用字符流读取文本以后,处理时,发现第一行数据没法匹配,其余数据能够正常处理,第一反应是文本文件可能有问题,可能有一些不可见字符,因而把文本文件拷贝到linux上经过命令查看,发现第一行最前面多了一个<U+FEFF>,问题可能就出在这个地方了,简单测试以下:linux

一、新建一个txt文件,文件中第一行放一个词语"程序猿",而后保存为UTF-8编码:vim

二、从文本文件读取数据,而后比较:less

 1     public static void main(String[] args) throws Exception {
 2         String firstline=readFirstLine("wordFile.txt");
 3         System.out.println(firstline.trim());
 4         System.out.println("程序猿".equals(firstline));
 5 
 6     }
 7     
 8     private static String  readFirstLine(String filename)throws Exception{
 9         try(
10                 BufferedReader reader=new BufferedReader(new FileReader(new File(ClassLoader.getSystemResource(filename).getPath())));
11             ){
12             String str=null;
13             while((str=reader.readLine())!=null){
14                 return str;
15             }
16         }
17         return null;
18     } 

三、运行程序查看结果:测试

发现读取第一行数据,进行空格处理以后,两个词语不相等。编码

四、将文件放到linux上查看(使用less命令,其余命令可能看不到效果):spa

发现词语以前多了一个<U+FEFF> ,问题可能就出在这个地方code

 五、去掉多余的字符blog

1)In your terminal, open the file using vim:
vim file_name
2) Remove all BOM characters:
:set nobomb
3) Save the file:
:wq

六、用新文件覆盖以后,再次测试就正常了。terminal

经过上面这几步,一切都很清楚了吧。get

相关文章
相关标签/搜索