CSV란? — 엑셀과의 차이, 깨짐 해결과 JSON 변환
데이터를 내려받으면 자주 만나는 확장자가 .csv입니다. 엑셀로 열리니 엑셀 파일 같지만, 열어 보면 서식이 다 사라져 있고 어떨 땐 한글이 와장창 깨져 있습니다. CSV가 무엇인지 한 번 이해해 두면 이런 문제의 원인과 해결법이 분명해집니다.
CSV의 정체 — 쉼표로 구분한 텍스트
CSV(Comma-Separated Values)는 이름 그대로 값을 쉼표로 구분해 나열한 텍스트 파일입니다. 메모장으로 열면 이렇게 생겼습니다.
이름,나이,도시
김철수,29,서울
이영희,34,부산
첫 줄은 보통 열 이름(헤더)이고, 그 아래 한 줄이 표의 한 행입니다. 값 안에 쉼표가 들어가면 "서울, 강남"처럼 따옴표로 감쌉니다. 구조가 단순해서 엑셀·구글 시트·데이터베이스·프로그래밍 언어 등 거의 모든 도구가 읽고 쓸 수 있는 공용어 역할을 합니다.
엑셀 파일(xlsx)과의 차이
| CSV | 엑셀(xlsx) | |
|---|---|---|
| 본질 | 순수 텍스트 | 엑셀 전용 형식 |
| 서식(색·글꼴·테두리) | 저장 안 됨 | 저장됨 |
| 수식·차트·여러 시트 | 저장 안 됨 | 저장됨 |
| 호환성 | 거의 모든 프로그램 | 엑셀·호환 프로그램 |
| 용량 | 작음 | 상대적으로 큼 |
한글 깨짐 — 인코딩 문제 해결
CSV를 엑셀에서 열었을 때 문ìž처럼 깨지는 이유는 인코딩 차이입니다. 요즘 데이터는 대부분 UTF-8로 저장되는데, 한국어 엑셀은 더블클릭으로 열 때 EUC-KR(CP949)로 해석하기 때문입니다. 해결법은 두 가지입니다.
- 엑셀에서 가져오기: 더블클릭 대신 데이터 → 텍스트/CSV 가져오기로 열고, 파일 원본(인코딩)을 UTF-8로 지정합니다.
- 파일을 다시 저장: 메모장에서 열어 "다른 이름으로 저장 → 인코딩: UTF-8(BOM)"으로 저장하면 더블클릭으로도 정상 표시됩니다.
CSV ↔ JSON 변환
웹 서비스·API·코드에서는 표 데이터를 JSON 형식으로 다루는 경우가 많습니다. 위 CSV를 JSON으로 바꾸면 이렇게 됩니다.
[
{ "이름": "김철수", "나이": "29", "도시": "서울" },
{ "이름": "이영희", "나이": "34", "도시": "부산" }
]
헤더가 키(key)가 되고 한 행이 객체 하나가 되는 규칙입니다. 손으로 바꾸면 따옴표·쉼표 실수가 나기 쉬우니, 변환 도구에 붙여넣어 양방향으로 바꾸는 것이 안전합니다. 엑셀 표를 복사해 붙여넣어도 됩니다(탭 구분 자동 인식).
CSV는 값을 쉼표로 구분해 나열한 순수 텍스트 파일이고, xlsx는 서식·수식·여러 시트까지 담는 엑셀 전용 형식입니다. CSV는 메모장으로도 열리고 거의 모든 프로그램이 읽을 수 있어 데이터 교환용으로 쓰이지만, 글꼴·색·수식 같은 정보는 저장되지 않습니다.
인코딩 차이 때문입니다. 많은 CSV가 UTF-8로 저장되는데 한국어 엑셀은 기본적으로 EUC-KR(CP949)로 해석해 한글이 깨져 보입니다. 엑셀에서 '데이터 → 텍스트/CSV 가져오기'로 열면서 원본 파일 인코딩을 UTF-8로 지정하거나, 파일을 'UTF-8(BOM)' 형식으로 다시 저장하면 해결됩니다.
웹 개발·API에서 표준처럼 쓰이는 형식이 JSON이기 때문입니다. 엑셀로 정리한 표를 웹 서비스나 코드에 넣으려면 JSON 배열로 바꾸는 경우가 많습니다. CSV의 첫 줄(헤더)이 JSON의 키가 되고 각 행이 객체 하나가 됩니다. 변환 도구를 쓰면 복사·붙여넣기만으로 양방향 변환이 됩니다.