공공데이터 포털에서 다운받은 csv파일을 database에 저장하기 위해 json형식으로 변환하는 과정에서 csvtojson 모듈을 이용하였는데, 한글 깨짐 현상이 발생하여 이를 해결하는 과정을 정리한 글이다.
공공데이터
공공데이터를 활용하기 위해서 api를 사용하거나, json파일을 제공받을 수도 있지만,
csv파일 밖에 지원을 해주지 않아 csv파일을 우선 다운로드 받았다.
아래는 공공데이터 사이트이다.
http://www.data.go.kr/index.do
csvtojson
node.js를 이용해서 백엔드를 구현하고 있었기에
csv파일을 json형식으로 변환해주는 좋은 모듈인 csvtojson을 발견하여 이용하기로 했다.
아래는 csvtojson의 api를 설명해놓은 사이트이다.
https://www.npmjs.com/package/csvtojson
사용법은 해당 사이트에서 잘 설명해 두었기에 여기서는 다루지 않겠다.
문제발생
csvtojson의 QuickStart를 참고하여 csv파일을 json으로 변환하였는데,
한글이 깨져서 보이는 것이다.
문제원인
공공데이터에서 다운받은 csv의 인코딩 방식은 cp949였다.
반면에, csvtojson의 디코딩 방식은 utf8인듯하다.(나의 추측임)
해결방법
csvtojson의 디코딩 방식을 바꾸는 방법을 찾아 보았지만 없는듯 했다.
그래서 csv의 인코딩 방식을 utf8로 변경해주었다.
해당 csv파일을 열고
다른이름으로 저장하기를 누르면
해당 파일의 형식이 CSV (쉼표로 분리) 로 되어있는데
이를 CSV UTF-8 (쉽표로 분리) 로 변경하여 저장하면
인코딩 방식이 UTF-8로 변경 된다.
UTF-8로 변경된 파일로 csvtojson 모듈을 사용해보면
한글이 깨지지않고 잘 나오는 것을 볼 수 있다!
꽤나 많은 시간을 허비했지만 언제나 그랬듯이 해결 방법은 간단했다.(아는것이 힘이다!)