亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Node.js文本文件BOM頭的去除方法

 更新時(shí)間:2020年11月22日 10:35:06   作者:Sobird  
這篇文章主要給大家介紹了關(guān)于Node.js文本文件BOM頭的去除方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

BOM

字節(jié)順序標(biāo)記(byte order mark),是位于碼點(diǎn)U+FEFF的統(tǒng)一碼字符的名稱。當(dāng)以UTF-16或UTF-32來將UCS/統(tǒng)一碼字符所組成的字符串編碼時(shí),這個(gè)字符被用來標(biāo)示其字節(jié)序。它常被用來當(dāng)做標(biāo)示文件是以UTF-8、UTF-16或UTF-32編碼的標(biāo)記。

不同編碼的字節(jié)順序標(biāo)記的表示:

編碼 表示(十六進(jìn)制) 表示(十進(jìn)制)
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, 但是我們可以手動(dòng)給UTF8編碼文件添加一個(gè)BOM頭

const fs = require('fs');

fs.writeFile('./bom.js', '\ufeffThis is an example with accents : é è à ', 'utf8', function (err) {})

BOM移除

對(duì)于UTF8來說,BOM的有無并不是必須的,因?yàn)閁TF8字節(jié)沒有順序,不需要標(biāo)記,也就是說一個(gè)UTF8文件可能有BOM,也可能沒有BOM。

根據(jù)不同編碼的BOM不同,我們可以根據(jù)文件頭幾個(gè)字節(jié)來判斷文件是否包含BOM,以及使用的那種Unicode編碼。

BOM字符雖然起到了標(biāo)記文件編碼的作用,其本身卻不屬于文件內(nèi)容的一部分,如果讀取文本文件時(shí)不去掉BOM,在某些使用場(chǎng)景下就會(huì)有問題。例如我們把幾個(gè)JS文件合并成一個(gè)文件后,如果文件中間含有BOM字符,就會(huì)導(dǎo)致瀏覽器JS語法錯(cuò)誤。因此,使用Node.js讀取文本文件時(shí),一般需要去掉BOM。

// 對(duì)于字符串內(nèi)容
function stripBOM(content) { 
 // 檢測(cè)第一個(gè)字符是否為BOM 
 if (content.charCodeAt(0) === 0xFEFF) {
 content = content.slice(1);
 }
 return content;
}

// 對(duì)于Buffer
function stripBOMBuffer(buf) { 
 if (buf[0] === 0xEF && buf[1] === 0xBB && buf[2] === 0xBF) { 
 buf = buf.slice(3); 
 } 
 return buf;
}

參考

總結(jié)

到此這篇關(guān)于Node.js文本文件BOM頭去除的文章就介紹到這了,更多相關(guān)Node.js文本文件BOM頭去除內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論