CSV 파일 한글이 ǰ���로 깨질 때, 원인은 하나입니다
거래처에 보낸 CSV 파일을 상대가 열었더니 한글이 ǰ���,����처럼 나옵니다. 내 컴퓨터에서는 멀쩡했습니다. 다시 보내도 결과가 같습니다.
파일이 손상된 게 아닙니다. 글자를 숫자로 바꿔 저장하는 방식이 서로 다른 것뿐입니다. 그 방식을 인코딩이라고 부릅니다.
이 글을 읽고 나면 깨진 화면만 보고 어느 쪽이 문제인지 판단하고, 상대가 열 수 있는 형태로 다시 보내는 순서가 손에 남습니다. 세 가지 방식으로 같은 내용을 저장해 바이트를 직접 비교한 결과입니다.
같은 글자인데 저장된 숫자가 다릅니다
품목,수량,금액이라는 같은 내용을 세 방식으로 저장하고 앞부분 바이트를 그대로 꺼내 봤습니다.

| 저장 방식 | 파일 크기 | 앞부분 바이트 |
|---|---|---|
| UTF-8 | 79바이트 | ed 92 88 eb aa a9 2c … |
| UTF-8 (BOM 있음) | 82바이트 | ef bb bf ed 92 88 eb aa a9 … |
| CP949 | 62바이트 | c7 b0 b8 f1 2c bc f6 … |
세 파일은 화면에 보이는 글자가 완전히 같습니다. 그런데 저장된 숫자가 전혀 다릅니다. 한글 한 글자가 UTF-8에서는 3바이트, CP949에서는 2바이트를 씁니다. 그래서 같은 내용인데도 파일 크기가 79바이트와 62바이트로 갈립니다.
깨진 모양만 보고 원인을 구분할 수 있습니다
읽는 방식이 어긋나면 깨지는데, 어느 쪽으로 어긋났는지에 따라 깨진 모양이 다릅니다. 이걸 알면 원인을 바로 짚을 수 있습니다.
| 깨진 화면 | 실제 상황 | 해야 할 일 |
|---|---|---|
ǰ���,���� 처럼 물음표·네모가 섞임 | CP949 파일을 UTF-8로 읽음 | 파일을 UTF-8로 다시 저장 |
íë©,ìë 처럼 알파벳과 기호가 늘어짐 | UTF-8 파일을 CP949로 읽음 | 파일에 BOM을 넣거나 CP949로 저장 |
두 번째 모양이 훨씬 흔합니다. 요즘 도구는 대부분 UTF-8로 저장하는데, 받는 쪽 프로그램이 한국어 윈도우 기본 방식으로 읽으려 하면서 어긋나기 때문입니다.
BOM 세 바이트가 하는 일
위 표에서 BOM이 붙은 파일만 앞에 ef bb bf가 더 있습니다. 이 세 바이트는 글자가 아니라 “이 파일은 UTF-8입니다”라는 표시입니다. 화면에는 보이지 않습니다.
Microsoft는 공식 문서에서 CSV 같은 텍스트 파일을 유니코드로 저장할 때 이 표시로 인코딩을 알린다고 안내합니다. 즉 상대가 윈도우에서 열 예정이라면, UTF-8로 저장하되 BOM을 함께 넣는 것이 가장 무난한 선택입니다. 파일이 3바이트 커지는 것 말고는 잃는 게 없습니다.
다만 프로그램에 따라 이 세 바이트를 글자로 취급해 첫 칸에 이상한 문자가 들어가는 경우가 있습니다. 개발 도구나 데이터 처리 스크립트로 넘길 파일이라면 BOM 없는 UTF-8이 더 안전합니다.
상대에 맞춰 고르는 기준
| 받는 쪽 | 권장 저장 방식 |
|---|---|
| 한국어 윈도우에서 엑셀로 열 예정 | UTF-8 + BOM |
| 맥·구글 스프레드시트에서 열 예정 | UTF-8 (BOM 없어도 됨) |
| 상대를 모름 | UTF-8 + BOM |
| 프로그램으로 읽어 들일 예정 | UTF-8 (BOM 없이) |
“상대를 모르면 BOM”이 실무에서 가장 사고가 적었습니다. 열리지 않는 것보다 첫 칸에 문자 하나가 더 붙는 쪽이 수습하기 쉽기 때문입니다.
이미 만든 파일을 바꾸는 법
파일을 다시 만들 필요는 없습니다. 인코딩만 변환하면 내용은 그대로 유지됩니다.
# 현재 인코딩 확인
file -I 파일.csv
# CP949 → UTF-8
iconv -f CP949 -t UTF-8 원본.csv > 변환본.csv
# UTF-8 → CP949 (윈도우 엑셀용)
iconv -f UTF-8 -t CP949 원본.csv > 변환본.csv
엑셀에서 직접 할 때는 다른 이름으로 저장을 누른 뒤 파일 형식에서 CSV UTF-8 을 고르면 BOM이 붙은 형태로 저장됩니다. 그냥 CSV를 고르면 시스템 기본 방식으로 저장되므로 상대 환경에 따라 다시 깨질 수 있습니다.
여기서 자주 놓치는 것
파일 이름도 같은 문제를 겪습니다. 압축 파일을 주고받을 때 한글 이름이 깨지는 것도 원리가 같습니다. 그 이야기는 ZIP으로 묶어도 용량이 그대로인 파일에서 함께 다뤘습니다.
메일로 보내기 전에 스스로 한 번 열어 보세요. 다만 내 컴퓨터에서는 잘 열리는 게 당연합니다. 확인하려면 다른 사람에게 보내 보거나, 웹메일에서 미리보기로 열어 보는 편이 현실적입니다.
숫자가 날짜로 바뀌는 문제는 인코딩과 무관합니다. 2026-08이 날짜로 바뀌거나 010의 앞 0이 사라지는 것은 표 프로그램이 값을 자동 해석해서 생기는 별개의 문제입니다. 인코딩을 바꿔도 해결되지 않습니다.
확인한 자료
- 측정 환경: macOS
iconv로 인코딩 변환, 바이트는 직접 확인. 2026년 8월 14일 측정 - Microsoft 지원 — 다른 파일 형식으로 통합 문서 저장 — CSV UTF-8 저장 옵션 안내
- 엑셀에서 실제로 열리는 모습은 프로그램 버전과 시스템 언어 설정에 따라 달라질 수 있어, 위 표는 인코딩 원리와 공식 안내를 기준으로 정리했습니다.