您好,登錄后才能下訂單哦!
BOM頭如何在Node.js文本文件中去除?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
BOM
字節順序標記(byte order mark),是位于碼點U+FEFF的統一碼字符的名稱。當以UTF-16或UTF-32來將UCS/統一碼字符所組成的字符串編碼時,這個字符被用來標示其字節序。它常被用來當做標示文件是以UTF-8、UTF-16或UTF-32編碼的標記。
不同編碼的字節順序標記的表示:
編碼 | 表示(十六進制) | 表示(十進制) |
UTF8 | EF BB BF | 239 187 191 |
UTF-16(大端序) | FE FF | 254 255 |
UTF-16(小端序) | FF FE | 255 254 |
UTF-32(大端序) | 00 00 FE FF | 0 0 254 255 |
UTF-32(小端序) | FF FE 00 00 | 255 254 0 0 |
BOM添加
UTF8編碼不需要BOM, 但是我們可以手動給UTF8編碼文件添加一個BOM頭
const fs = require('fs'); fs.writeFile('./bom.js', '\ufeffThis is an example with accents : é è à ', 'utf8', function (err) {})
BOM移除
對于UTF8來說,BOM的有無并不是必須的,因為UTF8字節沒有順序,不需要標記,也就是說一個UTF8文件可能有BOM,也可能沒有BOM。
根據不同編碼的BOM不同,我們可以根據文件頭幾個字節來判斷文件是否包含BOM,以及使用的那種Unicode編碼。
BOM字符雖然起到了標記文件編碼的作用,其本身卻不屬于文件內容的一部分,如果讀取文本文件時不去掉BOM,在某些使用場景下就會有問題。例如我們把幾個JS文件合并成一個文件后,如果文件中間含有BOM字符,就會導致瀏覽器JS語法錯誤。因此,使用Node.js讀取文本文件時,一般需要去掉BOM。
// 對于字符串內容 function stripBOM(content) { // 檢測第一個字符是否為BOM if (content.charCodeAt(0) === 0xFEFF) { content = content.slice(1); } return content; } // 對于Buffer function stripBOMBuffer(buf) { if (buf[0] === 0xEF && buf[1] === 0xBB && buf[2] === 0xBF) { buf = buf.slice(3); } return buf; }
關于BOM頭如何在Node.js文本文件中去除問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。