[컴] js에서 BOM(byte order marker) 검사

 

자바스크립트에서 BOM 검사 / js 에서 bom 검사 / bom 체크 / check /

js에서 BOM(byte order marker) 검사

다음 코드는 앞의 10 byte 만 가져와서 BOM 을 확인하는 code이다.


function _isUtf8(file, callback) {
  const slice = file.slice(0, 10)
  const fr = new FileReader()
  
  fr.onload = (e) => {
    // e.target.result : ArrayBuffer
    const view = new Uint8Array(e.target.result)
    // EF BB BF
    // 0xef, 0xbb, 0xbf
    let isUtf = false
    if (view[0] === 239 && view[1] === 187 && view[2] === 191) {
      isUtf = true
    } else {
      // do nothing
      isUtf = false
      // console.error('File has byte order mark (BOM)')
    }
    callback(isUtf)
  }
  
  fr.readAsArrayBuffer(slice)
}

async/await version

// asyn/await version
function _isUtf8(file, callback) {
  const slice = file.slice(0, 10)
  const fr = new FileReader()

  const promise = new Promise(function (resolve, reject) {
    fr.onload = (e) => {
      // e.target.result : ArrayBuffer
      const view = new Uint8Array(e.target.result)
      // EF BB BF
      // 0xef, 0xbb, 0xbf
      let isUtf = false
      if (view[0] === 239 && view[1] === 187 && view[2] === 191) {
        isUtf = true
      } else {
        // do nothing
        isUtf = false
        // console.error('File has byte order mark (BOM)')
      }
      resolve(isUtf)
    }
  })
  fr.readAsArrayBuffer(slice)
  return promise
}

See Also

  1. 쿠…sal: [컴][웹] browser에서 파일로 csv file 을 읽어서, 화면에 뿌려주는 js 코드

댓글 없음:

댓글 쓰기