반응형

csv 데이터를 file-saver 패키지로 파일 다운로드 기능을 만들었는데 엑셀에서 열어보니 한글이 깨지는 문제가 있었다.

import { saveAs } from 'file-saver';

const csv = 'csv,데이터,예시';
saveAs(
  new Blob([csv], { type: 'text/csv;charset=utf-8' }),
  '예제파일.csv'
);

대충 이런 코드로 csv 파일을 생성해서 다운로드하면

요래 한글이 깨진다... 해결법을 찾아보니 엑셀은 bom이 있어야만 utf-8로 인식한다고 한다. ms의 bom 사랑이란... 메모장은 정신 차린 걸로 아는데 다른 프로그램은 멀었나보다.

import { saveAs } from 'file-saver';

const csv = 'csv,데이터,예시';

const BOM = '\uFEFF';

// 한글깨짐 문제를 해결하기 위해 BOM 문자 삽입
saveAs(
  new Blob([BOM + csv], { type: 'text/csv;charset=utf-8' }),
  '예제파일.csv'
);

아무튼 이렇게 맨 앞에 bom 문자(\uFEFF)를 추가하면 해결된다.

엑셀에서 정상적으로 열리는걸 볼 수 있다.

반응형

+ Recent posts