亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

讀UTF-8 - BOM標記

讀UTF-8 - BOM標記

收到一只叮咚 2019-09-06 11:06:10
讀UTF-8 - BOM標記我正在通過FileReader讀取文件 - 文件是UTF-8解碼(帶BOM)現在我的問題是:我讀取文件并輸出一個字符串,但遺憾的是BOM標記也輸出了。為什么會這樣?fr = new FileReader(file);br = new BufferedReader(fr);     String tmp = null;     while ((tmp = br.readLine()) != null) {     String text;         text = new String(tmp.getBytes(), "UTF-8");     content += text + System.getProperty("line.separator");}第一行后的輸出?<style>
查看完整描述

3 回答

?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

在Java中,您必須手動使用UTF8 BOM(如果存在)。Java bug數據庫中記錄了此行為,此處和此處。暫時沒有解決方法,因為它會破壞JavaDoc或XML解析器等現有工具。在Apache的IO共享提供了一個BOMInputStream處理這種情況。

看看這個解決方案:處理帶有BOM的UTF8文件


查看完整回答
反對 回復 2019-09-10
?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

最簡單的修復可能只是\uFEFF從字符串中刪除結果,因為它幾乎不可能出于任何其他原因。

tmp = tmp.replace("\uFEFF", "");

另請參閱此番石榴錯誤報告


查看完整回答
反對 回復 2019-09-10
?
呼如林

TA貢獻1798條經驗 獲得超3個贊

使用Apache Commons庫。

類: org.apache.commons.io.input.BOMInputStream

用法示例:

String defaultEncoding = "UTF-8";InputStream inputStream = new FileInputStream(someFileWithPossibleUtf8Bom);try {
    BOMInputStream bOMInputStream = new BOMInputStream(inputStream);
    ByteOrderMark bom = bOMInputStream.getBOM();
    String charsetName = bom == null ? defaultEncoding : bom.getCharsetName();
    InputStreamReader reader = new InputStreamReader(new BufferedInputStream(bOMInputStream), charsetName);
    //use reader} finally {
    inputStream.close();}



查看完整回答
反對 回復 2019-09-10
  • 3 回答
  • 0 關注
  • 561 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號