게시글

강좌23 - NodeJS - 5달 전 등록 / 4달 전 수정

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

조회수:
0
Node.js교과서 책이 출간되었습니다. 이 포스팅보다는 책이나 동영상 강좌를 보시는 것을 추천합니다.

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로 열 때만 해당 문자열을 추가해주세요.

목록
투표로 게시글에 관해 피드백을 해주시면 게시글 수정 시 반영됩니다. 오류가 있다면 어떤 부분에 오류가 있는지도 알려주세요! 잘못된 정보가 퍼져나가지 않도록 도와주세요.
Copyright 2016- . 무단 전재 및 재배포 금지. 출처 표기 시 인용 가능.

댓글

아직 댓글이 없습니다.