java讀取文字檔案異常 - 程式人生
文章推薦指數: 80 %
百度搜了一下這個uFEFF 原因如下在Windows下用文字編輯器建立的文字檔案,如果選擇以UTF-8等Unicode格式儲存,會在檔案頭(第一個字元)加入一個BOM ...
程式人生>>java讀取文字檔案異常
java讀取文字檔案異常
阿新••發佈:2019-01-19
今天讀取一個文字檔案的時候出現一個特殊字元如下圖
前面的-複製不出來。
複製整個到idea編輯器裡面出現的是
uFEFF20170509
百度搜了一下這個uFEFF原因如下
在Windows下用文字編輯器建立的文字檔案,如果選擇以UTF-8等Unicode格式儲存,會在檔案頭(第一個字元)加入一個BOM標識。
這個標識在Java讀取檔案的時候,不會被去掉,而且String.trim()也無法刪除。
如果用readLine()讀取第一行存進String裡面,這個String的length會比看到的大1,而且第一個字元就是這個BOM。
這種情況會造成一些麻煩,比如在讀取ini檔案的時候,如果想判斷第一行是不是以“[”開頭就無法正確判斷。
幸好,Java在讀取Unicode檔案的時候,會統一把BOM變成“\uFEFF”,這樣的話,就可以自己手動解決了(判斷後,用substring()或replace()去除掉這個BOM):
if(line.startsWith("\uFEFF")){//line=line.substring(1);line=line.replace("\uFEFF","");}
什麼是BOM?BOM=ByteOrderMarkBOM是Unicode規範中推薦的標記位元組順序的方法。
比如說對於UTF-16,如果接收者收到的BOM是FEFF,表明這個位元組流是Big-Endian的;如果收到FFFE,就表明這個位元組流是Little-Endian的。
UTF-8不需要BOM來表明位元組順序,但可以用BOM來表明“我是UTF-8編碼”。
BOM的UTF-8編碼是EFBBBF(用UltraEdit開啟文字、切換到16進位制可以看到)。
所以如果接收者收到以EFBBBF開頭的位元組流,就知道這是UTF-8編碼了。
所有的BOM在C/C++/Java中都被處理為”\uFEFF”,參考:http://www.fileformat.info/info/unicode/char/feff/index.htm
Wikipedia關於POM的說明介紹:https://en.wikipedia.org/wiki/Byte_order_mark
(原創文章,轉載請註明轉自Clement-Xu的部落格)
版權宣告:本文為原創文章,轉載請註明轉自Clement-Xu的csdn部落格。
.
CS231nAssignment2--Fully-connectedNeuralNetwork
«上一篇
Python判斷使用者輸入錯誤型別下一篇»
相關推薦
java讀取文字檔案異常
今天讀取一個文字檔案的時候出現一個特殊字元如下圖
前面的-複製不出來。
複製整個到idea編輯器裡面出現的...
Java讀取文字檔案中文亂碼問題
最近遇到一個問題,Java讀取文字檔案(例如csv檔案、txt檔案等),遇到中文就變成亂碼。
讀取程式碼如下:
List&l...
java讀取文字檔案到mysql資料庫【示例2】
1、java讀取文字檔案到mysql資料庫【示例】:把手機號碼歸屬地檔案:安徽聯通.txt讀取到資料庫school的phon...
java讀取文字檔案到mysql資料庫【示例1】
1、java讀取文字檔案到mysql資料庫【示例】:把手機號碼歸屬地檔案:安徽聯通.txt讀取到資料庫school的pho...
java基礎BufferedReader類(提高字元流讀取文字檔案的效率)IO流(位元組流/字元流)
Stringnstr=sb.toString().replace("{name}",“ok”).replac...
java檔案操作(1)——判別指定檔案是否存在,讀取檔案修改時間和大小,讀取文字檔案內容,向文字檔案中寫入指定內容
任務要求:
完成一個javaapplication應用程式,判別指定路徑下指定檔名的檔案是否存在。
...
java快速讀取文字檔案最後一行資料內容,文字檔案非常大
http://www.iteye.com/problems/42748
publicstaticvoidmain(String[]ar...
讀取文字檔案內容(JavaFileChannel)
importjava.io.IOException;
importjava.io.RandomAccessFile;
importjav...
Java中用FileInputStream讀取文字檔案
FileInputStream類,俗稱檔案輸入流,他的作用是將文字檔案中的資料輸入到記憶體中。
他是一個位元組輸入流,是Inpu...
Java按行讀取文字檔案
上年紀了,記性差了,寫在這裡別忘了 FileReaderreader=newFileReader("D://lbhd...
搜尋
基礎教學
Mysql入門
Sql入門
Android入門
Docker入門
Go語言入門
Ruby程式入門
Python入門
Python進階
Django入門
Python爬蟲入門
最近訪問
java讀取文字檔案異常
oracle日期格式轉換+to_date(),to_char()
keras+2.x python3看圖說話模型一步一步的搭建
python--前端之CSS(css頁面引入方法、選擇器之基本選擇器、組合選擇器)
unordered_map+與+map+的對比(轉)
AVI視訊檔案編碼格式不受支援0xc00d5212怎麼解決?
如何判斷一個點在矩形內
Secure+CRT+自動記錄日誌
嵌入式程序員應知道的0x10個基本問題
python基礎學習-Set
延伸文章資訊
- 1java utf-8带bom格式内容(带"\uFEFF")转换成utf-8格式
后台导出的txt文件格式为带bom的utf-8。需要判断第一个字符是否是'\uFEFF'. if(inputTaskItem.substring ...
- 2Why UTF-8 BOM bytes efbbbf can be replaced by \ufeff?
The byte order mark (BOM) is a Unicode character, U+FEFF BYTE ORDER MARK (BOM), whose appearance ...
- 3Python \ufeff - SYmm 微筆記
在Windows下用文本編輯器創建的文本文件,如果選擇以UTF-8等Unicode格式保存,會在文件頭(第一個字符)加入一個BOM標識。具體去除方法看看下面代碼.
- 4位元組順序記號 - 维基百科
位元組順序記號(英語:byte-order mark,BOM)是位於碼點 U+FEFF 的統一碼字符的名称。當以UTF-16或UTF-32來將UCS/統一碼字符所組成的字串編碼時,這個字符被用來...
- 5java讀取文字檔案異常 - 程式人生
百度搜了一下這個uFEFF 原因如下在Windows下用文字編輯器建立的文字檔案,如果選擇以UTF-8等Unicode格式儲存,會在檔案頭(第一個字元)加入一個BOM ...