首頁 > Java > java教程 > Java讀取UTF-8檔案時如何保留BOM?

Java讀取UTF-8檔案時如何保留BOM?

Mary-Kate Olsen
發布: 2024-11-24 15:44:15
原創
712 人瀏覽過

How to Retain the BOM When Reading UTF-8 Files in Java?

使用BOM 標記讀取UTF-8:了解意外的BOM 輸出

以位元組順序讀取UTF-8 編碼的檔案時標記(BOM),有可能會遇到輸出字串中包含BOM。發生這種情況是因為 BOM(Unicode 標識符)會作為特定位元組序列儲存在檔案的開頭。

在給定的 Java 程式碼中,適當地利用 FileReader 和 BufferedReader 來處理 UTF-8 檔案讀取。但是,問題出現在後續行:

text = new String(tmp.getBytes(), "UTF-8");
登入後複製

此行嘗試使用 UTF-8 字元集解碼 tmp 字串中儲存的位元組。但是,String 上的 getBytes() 方法不會保留原始檔案中的 BOM 標記。因此,解碼過程會忽略 BOM,並且它實際上會丟失。

要在輸出字串中保留BOM 標記,需要對程式碼進行輕微調整:

byte[] bytes = tmp.getBytes("UTF-8");
if (isUTF8WithBOM(bytes)) {
    text = new String(bytes, 3, bytes.length - 3);
} else {
    text = new String(bytes, "UTF-8");
}
登入後複製

isUTF8WithBOM 方法檢查位元組數組是否以UTF-8 BOM 序列(0xEF、0xBB、 0xBF)開頭。如果為 true,則透過從第三個位元組開始對位元組數組進行切片來刪除 BOM。這可確保後續解碼過程在輸出字串中包含 BOM 標記。

以上是Java讀取UTF-8檔案時如何保留BOM?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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