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
延伸文章資訊
- 1ufeff的解决方法_51CTO博客
\ufeff的解决方法. 用"utf-8"编码方式读取带有BOM的文件时,它会把BOM当做是文件内容来处理, 也就会发生错误. 解决方法.
- 2Python \ufeff - SYmm 微筆記
在Windows下用文本編輯器創建的文本文件,如果選擇以UTF-8等Unicode格式保存,會在文件頭(第一個字符)加入一個BOM標識。具體去除方法看看下面代碼.
- 3java utf-8帶bom格式內容(帶"\uFEFF")轉換成utf-8格式- 台部落
java utf-8帶bom格式內容(帶"\uFEFF")轉換成utf-8格式. 原創 HiWorldNice 2020-06-20 04:48. 從txt文件中讀取一串字符串和數據庫中另一串字...
- 4IDE非法字符'\ufeff'报错| UTF8与UTF8-BOM,大端与小端等 ...
BOM. 出于好奇,我们查一下这个编码 \\ufeff 是个什么东东,查询得知,这是一个标识字节存储顺序的编码。 这个涉及到一个名词:BOM。
- 5Why 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 ...