首頁 > Java > java教程 > 主體

UTF-8檔案讀取中如何處理BOM標記?

Mary-Kate Olsen
發布: 2024-11-26 10:59:12
原創
841 人瀏覽過

How to Handle BOM Markers in UTF-8 File Reading?

在UTF-8 檔案讀取中處理BOM 標記

處理可能包含位元組順序標記的UTF-8 編碼文字檔案時( BOM),正確處理BOM 以避免意外輸出至關重要。 BOM 是一種特殊的位元組序列,指示檔案的位元組順序。在 UTF-8 中,BOM 是三位元組序列 EF BB BF。

考慮以下程式碼:

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");
}
登入後複製

在此程式碼中,BOM 將包含在輸出字串中text,因為 getBytes() 方法擷取字串的原始位元組,包括 BOM。要正確處理BOM,您可以使用以下技巧:

方法一:指定BOM 字元集

您可以將字元集指定為UTF-8使用Charset 類別的BOM:

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

方法2:讀取並刪除BOM

如果不需要BOM,您可以在處理文件的其餘部分之前讀取並刪除它:

char[] bom = new char[3];
int bytesRead = br.read(bom, 0, bom.length);
if (bytesRead == bom.length && new String(bom).equals("\uFEFF")) {
    // BOM exists, drop it
}
登入後複製

透過實作以下技術之一,您可以確保BOM 處理正確,且輸出字串不包含BOM 標記。

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

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