首頁 > Java > java教程 > 如何避免讀取UTF-8編碼檔案時輸出BOM標記?

如何避免讀取UTF-8編碼檔案時輸出BOM標記?

Mary-Kate Olsen
發布: 2024-11-16 22:43:03
原創
299 人瀏覽過

How to Avoid Outputting the BOM Marker When Reading a UTF-8 Encoded File?

Unicode BOM 和FileReader

讀取帶有位元組順序標記(BOM) 的UTF-8 編碼檔案時,您可能會遇到以下問題BOM 標記與文件內容一起輸出。發生這種情況是因為 Unicode 定義了 BOM 來指定編碼文字的位元組順序,如果處理不當,它可能會被解釋為字元序列。

在您的程式碼片段中:

  • fr和 br 用於以位元組形式讀取檔案並將其轉換為字元。
  • tmp 將檔案的每一行當作位元組陣列讀取。
  • text 將位元組數組轉換為 UTF-8編碼字串。
  • 內容連結檔案的行,包括 BOM 標記,因為它是檔案內容的一部分。

避免 BOM 標記包含在輸出中:

  1. 將檔案當作字串讀取,而不是位元組陣列。這樣就不需要將位元組轉換為字符,避免了 BOM 問題。
String content = new String(Files.readAllBytes(Paths.get(file)), "UTF-8"));
登入後複製
  1. 如果必須將檔案作為位元組數組讀取,可以在轉換之前手動刪除 BOM 標記它到一個字串。 BOM 標記是一個三位元組序列:
if (tmp.length >= 3 &&
    tmp[0] == (byte) 0xEF &&
    tmp[1] == (byte) 0xBB &&
    tmp[2] == (byte) 0xBF) {

    // Remove the BOM marker
    tmp = Arrays.copyOfRange(tmp, 3, tmp.length);
}
登入後複製

以上是如何避免讀取UTF-8編碼檔案時輸出BOM標記?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板