Node.js 텍스트 파일 BOM 헤더 제거 방법

BOM
바이트 순서 표시(byte order mark)는 코드 포인트 U+FEFF에 있는 통일된 코드 문자의 이름입니다.UCS/유니코드 문자로 구성된 문자열을 UTF-16 또는 UTF-32로 인코딩할 때 이 문자는 바이트 순서를 표시하는 데 사용됩니다.그것은 UTF-8, UTF-16 또는 UTF-32로 인코딩된 표시 파일로 자주 사용된다.
서로 다른 인코딩된 바이트 순서 표시의 표시:
인코딩
표현 (16진수)
표현 (10진수)
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이 포함되어 있는지, 그리고 사용하는 유니코드 인코딩을 판단할 수 있습니다.
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;
}

참고
  • 문자 인코딩 노트: ASCII, 유니코드 및 UTF-8
  • 바이트 순서 표시
  • 총결산
    여기 Node에 관한 이야기입니다.js 텍스트 파일 BO Mher 제거 글은 여기까지입니다.js 텍스트 파일 BO M헤드 제거 내용은 저희 이전 글을 검색하거나 아래 관련 글을 계속 찾아보세요. 앞으로 많이 사랑해 주세요!

    좋은 웹페이지 즐겨찾기