도
도구상자FREE ONLINE TOOLS
← 가이드 목록

엑셀에서 CSV 한글이 깨질 때 — 원인과 3가지 해결법

쇼핑몰 주문 내역, 회원 명단, 은행 거래 내역 — 다운로드한 CSV를 엑셀로 열었더니 한글이 ㅁㄴㅇㄹ도 아닌 외계어로 나옵니다. 파일이 망가진 게 아닙니다. 엑셀이 파일의 인코딩을 잘못 추측했을 뿐이고, 해결법은 세 가지입니다.

왜 깨지나 — UTF-8과 EUC-KR

  • 같은 한글이라도 파일에 저장되는 바이트는 인코딩에 따라 다릅니다 — 요즘 웹 표준은 UTF-8, 한국어 윈도우의 전통 기본값은 EUC-KR(CP949).
  • 엑셀은 CSV를 더블클릭으로 열면 시스템 기본 인코딩(EUC-KR)이라고 가정합니다. UTF-8 파일을 EUC-KR로 해석하니 한글이 깨집니다.
  • 파일 맨 앞에 BOM(UTF-8 표식)이 붙어 있으면 엑셀도 UTF-8로 정확히 읽습니다 — 그래서 같은 UTF-8인데 어떤 파일은 멀쩡하고 어떤 파일은 깨집니다.
  • 원리가 더 궁금하면 글자 깨짐과 인코딩 가이드에서 자세히 다룹니다.

해결법 3가지

  1. 데이터 가져오기로 열기(권장) — 엑셀에서 빈 통합 문서를 열고 데이터 탭 → 텍스트/CSV에서 가져오기 → 파일 선택 → 미리보기에서 인코딩(파일 원본)을 UTF-8로 지정. 한글이 바로 살아납니다.
  2. 메모장으로 재저장 — CSV를 메모장으로 열어(메모장은 자동 감지) 다른 이름으로 저장 → 인코딩 "UTF-8(BOM)" 선택 후 저장. 이제 더블클릭으로도 멀쩡하게 열립니다.
  3. 구글 시트 우회 — 구글 시트는 인코딩을 자동 감지합니다. 시트에서 가져오기 한 뒤 엑셀(xlsx)로 다시 내려받으면 인코딩 문제 자체가 사라집니다.
구조 확인 팁: 열이 밀리거나 따옴표가 이상하면 인코딩이 아니라 CSV 구조 문제입니다. CSV ↔ JSON 변환 도구에 붙여 넣어 보면 구분자·따옴표가 제대로 파싱되는지 바로 확인할 수 있습니다.
CSV ↔ JSON 변환붙여 넣어 구조 확인·변환 — 브라우저에서 바로 확인하기 →

반대 상황 — 엑셀 CSV가 다른 곳에서 깨질 때

  • 엑셀의 "CSV(쉼표로 분리)" 저장은 EUC-KR로 저장됩니다 — 이 파일을 UTF-8만 받는 시스템(웹 업로드·개발 도구)에 올리면 한글이 깨집니다.
  • 처방: 저장할 때 "CSV UTF-8(쉼표로 분리)" 형식을 선택하세요. 최신 엑셀에 기본 제공됩니다.
  • 주의: 이 형식은 BOM이 붙습니다. 일부 개발 도구·DB 임포트는 BOM을 데이터로 오인해 첫 칼럼명이 이상해질 수 있으니, 그런 경우 메모장에서 "UTF-8"(BOM 없음)로 재저장하면 됩니다.

덤 — 010이 10으로 바뀌는 문제

  • 전화번호 앞 0이 사라지거나 "1-2"가 "1월 2일"이 되는 건 인코딩이 아니라 엑셀의 자동 형식 변환 때문입니다.
  • 해결: 더블클릭 대신 데이터 가져오기로 열면서 해당 열 형식을 "텍스트"로 지정 — 원본 그대로 유지됩니다.
  • 이미 0이 날아간 파일은 복구할 수 없으므로(데이터 자체가 변형됨) 원본 CSV에서 다시 가져와야 합니다.

변환 도구로 확인한 CSV의 동작

CSV ↔ JSON 변환 도구에 아래 CSV를 넣어 본 결과입니다.

name,age,zip,memo 홍길동,30,01234,"서울, 강남" 이철수,,06236,
CSV의 칸변환된 값의미
01234"01234"앞자리 0이 유지됨 (문자열로 읽음)
30"30"숫자도 문자열
"서울, 강남""서울, 강남"따옴표 안의 쉼표는 칸을 나누지 않음
(빈 칸)""빈 문자열

CSV 파일 자체에는 "01234"가 그대로 들어 있습니다. 0이 사라지는 것은 파일이 아니라 엑셀이 그 칸을 숫자로 해석하기 때문입니다. 모든 칸을 문자열로 읽는 도구에서는 0이 유지되므로, 0이 사라진 것처럼 보이면 원본 CSV를 메모장이나 이 도구로 열어 값이 남아 있는지 먼저 확인하세요.

구분자도 같은 식으로 확인할 수 있습니다. 세미콜론으로 구분된 a;b 파일을 쉼표 설정으로 읽으면 {"a;b":"1;2"}처럼 한 칸으로 뭉쳐 나옵니다. 이 도구에서 JSON을 CSV로 바꿔 내려받는 파일에는 맨 앞에 3바이트짜리 표식(BOM)이 붙어 있어, 엑셀에서 더블클릭으로 열어도 한글이 깨지지 않습니다.

자주 묻는 질문
Q. 왜 같은 CSV가 메모장에서는 멀쩡한데 엑셀에서만 깨지나요?

메모장은 파일 인코딩을 자동 감지하지만, 엑셀은 CSV를 더블클릭으로 열 때 한국어 윈도우 기본 인코딩(CP949/EUC-KR)으로 가정하기 때문입니다. 요즘 웹에서 내려받는 CSV는 대부분 UTF-8이라서, 엑셀이 UTF-8 바이트를 EUC-KR로 잘못 해석하면 한글이 외계어처럼 깨집니다. 파일 자체는 멀쩡하므로 올바른 인코딩으로 다시 열기만 하면 됩니다.

Q. BOM이 뭔가요? 왜 BOM을 붙이면 해결되나요?

BOM(Byte Order Mark)은 파일 맨 앞에 붙는 보이지 않는 3바이트 표식(EF BB BF)으로, '이 파일은 UTF-8'이라고 알려 주는 역할을 합니다. 엑셀은 CSV를 열 때 BOM이 있으면 UTF-8로 정확히 읽고, 없으면 시스템 기본 인코딩으로 가정해 깨집니다. 그래서 'UTF-8(BOM)'으로 저장하면 더블클릭만으로도 한글이 멀쩡하게 열립니다. 단, 일부 개발 도구는 BOM을 데이터로 오인하므로 프로그램에 넘길 파일에는 BOM 없는 UTF-8이 안전합니다.

Q. 전화번호 010이 10으로 바뀌고 날짜가 이상해지는 것도 인코딩 문제인가요?

아니요, 그건 엑셀의 자동 형식 변환 때문입니다. 엑셀은 CSV의 모든 값을 숫자·날짜로 해석하려고 시도해서, 010-1234가 앞의 0이 사라진 숫자가 되거나 1-2 같은 값이 1월 2일로 바뀝니다. 더블클릭 대신 데이터 탭의 '텍스트/CSV에서 가져오기'로 열면서 해당 열의 형식을 '텍스트'로 지정하면 원본 그대로 유지됩니다. 인코딩 문제와 형식 변환 문제는 원인이 달라 처방도 다릅니다.

함께 보면 좋은 가이드