導航:首頁 > 凈水問答 > java過濾bom頭

java過濾bom頭

發布時間:2024-11-24 21:06:46

㈠ Java 按行讀取UTF-8文件,開頭第一行總會有一個不可見字元

這個是叫做BOM(Byte Order Mark),位元組順序標記,出現在文本文件頭部,Unicode編碼標准中用於標識文件是採用哪種格式的編碼。
沒有BOM 則表示是默認的ASCII
BOM主要用途是給類似txt sublimetext notepad 之類的ide看的 讓它們能夠知道用哪種編碼顯示裡面的內容

㈡ java判斷文件編碼格式 怎麼判斷編碼格式

UTF-8編碼的文本文檔,有的帶有BOM (Byte Order Mark, 位元組序標志),即0xEF, 0xBB, 0xBF,有的沒有。Windows下的txt文本編輯器在保存UTF-8格式的文本文檔時會自動添加BOM到文件頭。在判斷這類文檔時,可以根據文檔的前3個位元組來進行判斷。然敏頌而BOM不是必需的,而且也不是推薦的。對不希望UTF-8文檔帶有BOM的程序會帶來兼容性問題,例如Java編譯器在編譯帶有BOM的UTF-8源文件時就會出錯。而且BOM去掉了UTF-8一個期望的特性,即是在文本全部是ASCII字元時UTF-8是和ASCII一致的,即UTF-8向下兼容ASCII。
在具體判斷時,如果文檔不帶有BOM,就無法根據BOM做出判斷,而且IsTextUnicode API也無法對UTF-8編碼的Unicode字元串做出判斷。那在編程判斷時就要根據UTF-8字元編碼的此冊規律進行判斷了。
UTF-8是一種多森拿宏位元組編碼的字元集,表示一個Unicode字元時,它可以是1個至多個位元組,在表示上有規律:
1位元組:0xxxxxxx
2位元組:110xxxxx 10xxxxxx
3位元組:1110xxxx 10xxxxxx 10xxxxxx
4位元組:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
這樣就可以根據上面的特徵對字元串進行遍歷來判斷一個字元串是不是UTF-8編碼了。
舉例代碼:
java.io.File f=new java.io.File("待判定的文本文件名");
try{
java.io.InputStream ios=new java.io.FileInputStream(f);
byte[] b=new byte[3];
ios.read(b);
ios.close();
if(b[0]==-17&&b[1]==-69&&b[2]==-65)
System.out.println(f.getName()+"編碼為UTF-8");
else System.out.println(f.getName()+"可能是GBK");
}catch(Exception e){
e.printStackTrace();
}

閱讀全文

與java過濾bom頭相關的資料

熱點內容
缺氧為什麼老有污水 瀏覽:654
純凈水法語怎麼說 瀏覽:608
塔機提升電機用變頻器好用嗎 瀏覽:248
宿州凈水設備哪個品牌好 瀏覽:482
什麼化工生產廢水會含有重金屬 瀏覽:428
凱馬凈水器怎麼洗濾芯 瀏覽:235
魚缸濾芯怎麼清理 瀏覽:672
寧德膜結構污水池加蓋多少錢一平 瀏覽:991
水龍頭濾水機與凈水器哪個好 瀏覽:470
邁森源凈水器空氣凈化器怎麼樣 瀏覽:924
村污水排放方式怎麼寫 瀏覽:105
污水處理廠壽命統計 瀏覽:568
崇明區工業污水處理設備要多少錢 瀏覽:877
愉升商用飲水機不顯示什麼原因 瀏覽:96
凈水器退貨扣費怎麼辦 瀏覽:471
南陽廢水處理怎麼選 瀏覽:181
環氧樹脂膠一個kg 瀏覽:51
精密濾芯怎麼保護 瀏覽:474
趁熱過濾溶質在哪 瀏覽:988
煉金後的廢水如何處理 瀏覽:427