日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

读取文本文件时<U+FEFF> 导致的奇怪问题

發布時間:2023/12/13 综合教程 32 生活家
生活随笔 收集整理的這篇文章主要介紹了 读取文本文件时<U+FEFF> 导致的奇怪问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

項目中經常會從一些文本文件中讀取數據進行業務處理,最近遇到一個問題,另外一個部門提供一個txt文本給我們進行業務處理,當我們使用字符流讀取文本之后,處理時,發現第一行數據無法匹配,其他數據可以正常處理,第一反應是文本文件可能有問題,可能有一些不可見字符,于是把文本文件拷貝到linux上通過命令查看,發現第一行最前面多了一個<U+FEFF>,問題可能就出在這個地方了,簡單測試如下:

1、新建一個txt文件,文件中第一行放一個詞語"程序猿",然后保存為UTF-8編碼:

2、從文本文件讀取數據,然后比較:

 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     } 

3、運行程序查看結果:

發現讀取第一行數據,進行空格處理之后,兩個詞語不相等。

4、將文件放到linux上查看(使用less命令,其他命令可能看不到效果):

發現詞語之前多了一個<U+FEFF> ,問題可能就出在這個地方

5、去掉多余的字符

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

6、用新文件覆蓋之后,再次測試就正常了。

通過上面這幾步,一切都很清楚了吧。

總結

以上是生活随笔為你收集整理的读取文本文件时&lt;U+FEFF&gt; 导致的奇怪问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。