在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中文網其他相關文章!