게시글

5만명이 선택한 평균 별점 4.9의 제로초 프로그래밍 강좌! 로드맵만 따라오면 됩니다! 클릭
강좌23 - NodeJS - 4년 전 등록

CSV 파일 만들 때 엑셀에서 한글 깨짐 현상 해결하기

Node.js를 통해서 CSV 파일을 만들고 나서 Excel로 열었을 때 한글이 깨지는 현상이 있습니다.

인터넷에서 흔하게 나오는 해결법은 CSV 파일을 메모장으로 열고 ANSI 확장자로 다시 저장하라고 되어있는데, 이 방법은 프로그래밍적인 방법이 아니라 따를 수 없습니다.

그래서 코드로 해결할 수 있는 방법을 공유합니다. 매우 간단합니다.

보통 다음과 같이 이차원 배열을 문자열로 만들어 CSV 파일로 보내실 겁니다.

const fs = require('fs');

const arr = [['name', 'age'], ['zerocho','27'], ['nero', '32']];
const data = arr.map((row) => row.join(',')).join('\n');
fs.writeFileSync('result.csv', data);

이렇게 만들면 한글이 깨집니다. UTF-8이더라도요.

해결 방법은 문자열 데이터 앞에 \uFEFF를 붙여주는 것입니다.

const fs = require('fs');

const arr = [['name', 'age'], ['zerocho','27'], ['nero', '32']];
const data = arr.map((row) => row.join(',')).join('\n');
fs.writeFileSync('result.csv', '\uFEFF' + data); 

BOM markers를 붙여주는 방법인데요. 문제는 BOM이 필요없는 곳에서는(대부분의 경우 그렇습니다) \uFEFF 문자열이 오히려 방해가 될 수 있습니다.

CSV를 윈도에서 Excel로 열 때만 해당 문자열을 추가해주세요.

조회수:
0
목록
투표로 게시글에 관해 피드백을 해주시면 게시글 수정 시 반영됩니다. 오류가 있다면 어떤 부분에 오류가 있는지도 알려주세요! 잘못된 정보가 퍼져나가지 않도록 도와주세요.
Copyright 2016- . 무단 전재 및 재배포 금지. 출처 표기 시 인용 가능.
5만명이 선택한 평균 별점 4.9의 제로초 프로그래밍 강좌! 로드맵만 따라오면 됩니다! 클릭

댓글

3개의 댓글이 있습니다.
2년 전
안녕하세요 혹시 반대로 csv파일을 읽을 때 한글이 깨지는 경우에 사용 가능한 방법도 있을까요?
2년 전
파일을 읽을 때 한글이 깨지는 것은 iconv같은 라이브러리로 인코딩 변환을 해보심이 어떨까 싶습니다.
2년 전
좋은 라이브러리 알려주셔서 감사합니다!!! 열심히 서치했는데 엑셀에서 바꾸고 메모장에서 바꾸고 이런거 밖에 없더라고요 ㅠㅠ
3년 전
잘되는디유
3년 전
안디는디유