CSV가 엑셀에서 깨질 때 고치는 법|UTF-8(BOM 포함)과 CP949(ANSI) 구분해서 쓰기
웹 서비스에서 내려받은 CSV를 더블클릭해 엑셀로 열었더니 ‘이름,주소’가 ‘�씠由�,二쇱냼’처럼 깨져 있었다. 이것은 CSV 내용이 망가진 것이 아니라 엑셀이 문자 인코딩을 잘못 짚어 읽었을 뿐입니다. 이 글에서는 깨지는 이유, 지금 열어 둔 CSV를 제대로 여는 법, 다음부터 깨지지 않게 저장하는 법(UTF-8 BOM 포함·CP949), 변환할 때 사라지는 문자의 주의점을 정리합니다.
엑셀은 BOM 없는 CSV를 CP949로 읽는다
요즘 웹 서비스나 시스템이 내보내는 CSV는 대부분 UTF-8입니다. 한편 한국어판 Windows의 엑셀은 CSV를 더블클릭해서 열 때, 파일 맨 앞에 ‘UTF-8입니다’라는 표시(BOM)가 없으면 시스템의 옛 인코딩인 CP949(ANSI, 확장 완성형)로 읽습니다. UTF-8 한글을 CP949로 읽으니 다음처럼 깨집니다.
| 원래 내용 | 엑셀에서 보이는 모습(UTF-8을 CP949로 읽음) |
|---|---|
| 이름,주소 | �씠由�,二쇱냼 |
| 상품명,가격 | �긽�뭹紐�,媛�寃� |
| 홍길동,서울특별시 | �솉湲몃룞,�꽌�슱�듅蹂꾩떆 |
| 안녕하세요 | �븞�뀞�븯�꽭�슂 |
BOM(바이트 순서 표시)은 파일 맨 앞에 두는 EF BB BF 3바이트로, 화면에는 표시되지 않습니다. 엑셀은 이 BOM이 있으면 UTF-8로 올바르게 읽습니다. 즉 ‘UTF-8(BOM 포함)’으로 저장한 CSV라면 더블클릭해도 깨지지 않습니다. 영문과 숫자만 있는 CSV는 UTF-8과 CP949에서 같은 바이트라서 깨지지 않고, 한글이 들어갔을 때만 깨지는 것도 이 때문입니다. 일본어판 Windows는 Shift_JIS, 중국어판은 GBK로 읽을 뿐 구조는 같습니다.
지금 깨져 있는 CSV를 제대로 여는 법
- 1
엑셀의 데이터 탭에서 가져온다
빈 통합 문서를 열고 ‘데이터’ 탭 → ‘텍스트/CSV에서’로 파일을 고릅니다. 미리 보기 화면의 ‘파일 원본’에서 ‘65001: 유니코드(UTF-8)’를 고르면 한글이 제대로 보이는지 확인한 뒤 불러올 수 있습니다.
- 2
BOM 포함 UTF-8로 변환해서 연다
문자 깨짐 복원·해독 도구의 ‘파일·CSV’에 파일을 넣으면 인코딩·BOM 유무·줄바꿈 코드를 판정합니다. ‘UTF-8(BOM 포함)’을 고르고 ‘변환하여 저장’한 파일은 더블클릭해도 엑셀에서 깨지지 않고 열립니다.
- 3
구글 스프레드시트로 연다
구글 스프레드시트나 Mac의 Numbers는 UTF-8 CSV를 그대로 읽을 수 있습니다. 내용만 볼 거라면 이것으로도 충분하지만, CP949로 저장된 CSV를 열면 오히려 깨질 수 있습니다.
깨진 글자만 손에 있는(CSV 내용을 메일에 붙여 보냈다든가) 경우에는 아쉽지만 완전히 되돌리기 어려운 경우가 많습니다. UTF-8 한글은 3바이트, CP949는 2바이트 단위로 읽기 때문에 짝이 맞지 않는 바이트가 ‘�’로 버려지고, 위 표처럼 거의 모든 글자에 ‘�’가 섞입니다. 상대에게 원래 파일을 다시 받아 위의 방법으로 여세요.
받는 쪽에 맞춘 저장 방법
| 받는 쪽 | 추천 인코딩 | 이유 |
|---|---|---|
| Windows 엑셀로 여는 사람 | UTF-8(BOM 포함) | 더블클릭해도 깨지지 않고, 이모지나 외국 문자도 남는다 |
| 오래된 업무 시스템·회계 프로그램에 올리기 | CP949(EUC-KR) | 올리는 쪽이 CP949만 읽는 경우가 많다 |
| 프로그램·데이터베이스·API | UTF-8(BOM 없음) | 맨 앞의 BOM이 1열 항목 이름에 섞이는 것을 막는다 |
| Mac·구글 스프레드시트 | UTF-8 | BOM 유무와 관계없이 읽을 수 있다 |
엑셀로 저장할 때는 ‘다른 이름으로 저장’의 파일 형식에서 고릅니다. ‘CSV UTF-8(쉼표로 분리)’은 BOM 포함 UTF-8, ‘CSV(쉼표로 분리)’는 한국어판 Windows에서 CP949로 저장됩니다. 줄바꿈 코드는 Windows 프로그램용이면 CRLF, Mac·Linux나 프로그램용이면 LF가 기본입니다. 스마트폰 카운터로 센 교통량 조사 집계표처럼 웹 도구에서 내보낸 CSV도 BOM 포함 UTF-8이라면 그대로 엑셀에서 열립니다(교통량 조사 하는 법과 집계표 만들기).
CP949로 변환하면 사라지는 문자
UTF-8은 거의 모든 문자를 나타낼 수 있지만, CP949로 나타낼 수 있는 문자는 한정되어 있습니다. UTF-8 CSV를 CP949로 변환하면 나타낼 수 없는 문자는 ‘?’로 바뀌고 되돌릴 수 없습니다. CP949로 나타낼 수 있는지는 대략 다음과 같습니다.
| 문자 | CP949에서 | 메모 |
|---|---|---|
| 현대 한글 11,172자 | 나타낼 수 있다 | 확장 완성형이라 모든 음절이 들어 있다 |
| 한자(中 등)·①·€ | 나타낼 수 있다 | 자주 쓰는 한자와 기호는 들어 있다 |
| é·ü·ñ 같은 악센트 문자 | 나타낼 수 없다 | 외국인 이름·지명(Café 등)이 ‘?’가 된다 |
| 𠮷 같은 확장 한자 | 나타낼 수 없다 | UTF-8에서 4바이트인 문자 |
| 🍣 같은 이모지 | 나타낼 수 없다 | ‘?’가 된다 |
CP949 CSV가 필요할 때는 먼저 나타낼 수 없는 문자를 찾아, 올리는 쪽의 규칙에 맞춰 바꾸거나 지운 뒤 저장하세요. 사람 이름의 글자를 바꾸면 다른 사람으로 취급될 수도 있으니, 올리는 쪽에 확인하는 것이 확실합니다. 일본어 이름에서 자주 깨지는 髙·﨑·𠮷 같은 글자의 입력법과 다루는 법은 髙·﨑·𠮷 입력법과 깨지는 이유에 정리했습니다.
자주 묻는 질문
- CSV를 엑셀로 열면 한글이 깨지는 이유는?
- UTF-8로 저장된 CSV를 엑셀이 CP949로 읽고 있기 때문입니다. 한국어판 Windows의 엑셀은 맨 앞에 BOM이 없는 CSV를 CP949로 엽니다. UTF-8(BOM 포함)로 다시 저장하거나, 데이터 탭에서 인코딩을 지정해 가져오면 깨지지 않습니다.
- BOM 포함 UTF-8과 BOM 없는 UTF-8의 차이는?
- 파일 맨 앞에 EF BB BF 3바이트(BOM)가 있는지의 차이입니다. 안의 글자는 같지만, 엑셀은 BOM이 있으면 UTF-8로 읽습니다. 프로그램이나 데이터베이스에 넘길 때는 BOM이 1열 항목 이름에 섞일 수 있으므로 BOM 없음이 알맞습니다.
- CP949(EUC-KR) CSV가 필요하다고 합니다. 어떻게 변환하나요?
- 엑셀에서 ‘CSV(쉼표로 분리)’로 저장하면 한국어판 Windows에서는 CP949가 됩니다. 이모지, 악센트 문자(é 등), 확장 한자처럼 CP949에 없는 문자는 ‘?’가 되므로 먼저 고쳐 주세요.
- Mac에서 CSV가 깨집니다.
- Mac의 엑셀에서도 BOM 없는 UTF-8 CSV는 깨질 수 있습니다. 데이터 탭에서 인코딩을 지정해 가져오거나 UTF-8(BOM 포함)로 변환하세요. 반대로 Windows의 CP949 CSV를 Numbers처럼 UTF-8을 전제로 하는 앱에서 열면 깨지므로, 그때는 UTF-8로 변환합니다.
이 글에서 소개한 도구
함께 읽으면 좋은 글
호흡법 하는 법|4-7-8 호흡법·박스 호흡·공명 호흡의 차이와 고르는 법
잠이 오지 않는 밤, 시험이나 면접 직전, 좀처럼 가라앉지 않는 짜증. “심호흡해 봐”라는 말을 들어도 몇 초 들이마시고 몇 초 내쉬어야 하는지, 어떤 호흡법을 골라야 하는지는 의외로 잘 모릅니다. 이 글에서는 대표적인 5가지 호흡법(4-7-8 호흡법·박스 호흡·공명 호흡·생리적 한숨·복식 호흡)의 초 수와 방법을, 1분당 호흡 횟수와 ‘날숨÷들숨’ 비율로 비교하며 설명합니다. 호흡으로 마음이 진정되는 원리, 자기 전·긴장·짜증 등 상황별로 고르는 법, 괴로울 때 바로잡는 법, 안정 시 호흡수 재는 법, 해서는 안 되는 상황까지 정리했습니다.
글 읽기 →전은 포맷이란? 일본 종합 이체·급여 이체 데이터 만드는 법과 120바이트 레이아웃
일본에서 회사가 인터넷 뱅킹으로 수십 건의 이체를 한꺼번에 보낼 때, 은행에서 "전은 포맷 파일을 가져와 주세요"라는 안내를 받곤 합니다. 전은 포맷은 일본 전국은행협회(전은협)가 정한 이체 데이터 작성 방식으로, 한 줄이 120바이트인 고정 길이 텍스트를 헤더·데이터·트레일러·엔드의 4종류 레코드로 구성합니다. 이 글에서는 종합 이체·급여 이체·상여 이체의 차이, 각 레코드의 항목과 자릿수(몇 번째 바이트에 무엇을 쓰는지), 수취인 이름을 반각 가타카나로 바꿀 때의 규칙과 「カ)」「(カ」 법인 약어, 유초 은행 기호·번호 변환, Excel·CSV로 만드는 절차, 가져오기 오류의 원인과 해결 방법까지 실무에서 막히는 순서대로 정리했습니다.
글 읽기 →가챠 확률 계산 방법|몇 연차에 나올까? 천장·픽뚫·풀돌 기댓값
“배출률 1%면 100연차 안에는 나오겠지” 하고 돌렸는데 끝내 안 나왔다. 이건 유난히 운이 나빴던 게 아니라, 1%를 100번 뽑아 1개 이상 나올 확률이 애초에 약 63%밖에 안 되기 때문입니다. 이 글에서는 가챠에서 “n번 뽑아 나올 확률”의 계산식, 배출률×횟수 조견표, 절반의 사람·10명 중 9명이 나오는 횟수, 천장과 픽뚫(확정 천장)이 있을 때의 평균과 최악의 횟수, 천장 카운트 이월, 풀돌(7개)까지 필요한 횟수, 랜덤 캔뱃지·트레카를 전종 컴플리트하려면 몇 개가 필요한지를 실제로 계산한 숫자로 정리했습니다.
글 읽기 →