CSV 파일 한글 깨짐, 이렇게 해결하세요
CSV 파일을 더블클릭해서 열었는데 한글이 전부 "궎긿긌뙍" 같은 알 수 없는 문자로 보인 적 있으신가요? 아니면 "????"로 표시되거나, 아예 빈 칸으로 나오는 경우도 있습니다. 이건 파일이 손상된 게 아니라, 인코딩 불일치 때문입니다.
이 글에서는 CSV 한글 깨짐이 왜 발생하는지 원인을 설명하고, 해결하는 3가지 방법을 단계별로 알려드립니다.
원인: UTF-8과 EUC-KR의 차이
컴퓨터가 글자를 저장할 때는 숫자로 변환합니다. 이 변환 규칙을 "인코딩(Encoding)"이라고 합니다. 문제는 한국어를 표현하는 인코딩이 여러 개 존재한다는 것입니다.
EUC-KR (완성형)
1990년대부터 한국에서 표준처럼 쓰인 인코딩입니다. 한글 2,350자를 표현할 수 있습니다. 과거 한국 정부기관, 은행, 쇼핑몰 관리자 페이지에서 내보내는 CSV 파일이 대부분 이 인코딩입니다.
UTF-8 (유니코드)
전 세계 모든 문자를 표현할 수 있는 국제 표준 인코딩입니다. 한글 11,172자를 모두 포함합니다. 최신 웹사이트, Google Sheets, 대부분의 프로그래밍 언어가 기본으로 사용합니다.
깨짐이 발생하는 이유: EUC-KR로 저장된 파일을 UTF-8로 읽으려고 하면(또는 반대), 숫자를 잘못된 규칙으로 해석하게 되어 글자가 깨집니다. "가"를 EUC-KR로 저장하면 B0 A1인데, 이걸 UTF-8 규칙으로 읽으면 전혀 다른 글자가 됩니다.
해결법 1: 메모장에서 UTF-8로 다시 저장
가장 쉬운 방법입니다. Windows에 기본 설치된 메모장(Notepad)만 있으면 됩니다.
단계별 절차
- CSV 파일을 마우스 오른쪽 클릭 > 연결 프로그램 > 메모장으로 엽니다.
- 메모장에서 한글이 정상으로 보이는지 확인합니다. 메모장은 인코딩을 자동 감지하므로 대부분 정상 표시됩니다.
- 파일 > 다른 이름으로 저장을 클릭합니다.
- 하단의 "인코딩" 드롭다운에서 "UTF-8(BOM 포함)"을 선택합니다.
- 파일명을 같게 두고 저장합니다.
- 이제 엑셀이나 다른 프로그램에서 다시 열면 한글이 정상 표시됩니다.
"UTF-8"과 "UTF-8(BOM 포함)"의 차이: BOM(Byte Order Mark)은 파일 시작 부분에 "이 파일은 UTF-8입니다"라는 표시를 넣는 것입니다. 엑셀은 BOM이 없으면 인코딩을 제대로 인식하지 못하는 경우가 있으므로, 엑셀에서 열 CSV라면 "UTF-8(BOM 포함)"을 선택하는 게 안전합니다.
해결법 2: 엑셀에서 가져오기 마법사 사용
엑셀이 설치되어 있다면, "데이터 가져오기" 기능으로 인코딩을 직접 지정할 수 있습니다.
단계별 절차
- 엑셀을 실행하고, 빈 통합 문서를 엽니다. (CSV를 더블클릭하지 마세요!)
- 데이터 탭 > 텍스트/CSV에서를 클릭합니다.
- CSV 파일을 선택합니다.
- 미리보기 창 상단에 "파일 원본" 드롭다운이 있습니다. 여기서 인코딩을 선택할 수 있습니다.
- 한글이 깨져 보이면 "949: Korean"(EUC-KR)을 선택해 봅니다. 그래도 깨지면 "65001: Unicode (UTF-8)"을 선택합니다.
- 미리보기에서 한글이 정상으로 보이면 "로드" 버튼을 클릭합니다.
이 방법의 장점은 원본 파일을 수정하지 않고, 엑셀 안에서 인코딩을 바꿔가며 미리볼 수 있다는 것입니다.
해결법 3: FreeToolbox CSV 뷰어로 바로 열기
인코딩을 일일이 바꾸기 귀찮다면, FreeToolbox CSV 뷰어가 가장 간단합니다.
EUC-KR 인코딩 CSV 파일도 자동 감지해서 정상 표시
FreeToolbox CSV 뷰어는 파일의 인코딩을 자동으로 감지합니다. UTF-8이든 EUC-KR이든, 심지어 일본어(Shift_JIS)나 중국어(GB2312) 인코딩이든 대부분 자동으로 인식해서 한글을 정상 표시합니다.
사용법은 간단합니다.
- FreeToolbox CSV 뷰어를 엽니다.
- CSV 파일을 화면에 드래그 앤 드롭합니다.
- 끝입니다. 인코딩 선택이나 설정 변경 없이 바로 표가 표시됩니다.
파일이 서버로 업로드되지 않고 브라우저에서 처리되므로 개인정보가 포함된 CSV도 안심하고 열 수 있습니다. 더 자세한 비교는 CSV 뷰어 3개 비교 글을 참고하세요.
보너스: Python으로 인코딩 확인하기
개발자라면 Python으로 파일의 인코딩을 확인할 수 있습니다. chardet 라이브러리를 사용합니다.
# chardet 설치 (최초 1회)
pip install chardet
# 인코딩 확인
import chardet
with open('data.csv', 'rb') as f:
raw = f.read()
result = chardet.detect(raw)
print(result)
# {'encoding': 'EUC-KR', 'confidence': 0.99, 'language': 'Korean'}
# 인코딩 변환 (EUC-KR → UTF-8)
with open('data.csv', 'r', encoding='euc-kr') as f:
content = f.read()
with open('data_utf8.csv', 'w', encoding='utf-8-sig') as f:
f.write(content)
utf-8-sig는 BOM을 포함한 UTF-8입니다. 이렇게 저장하면 엑셀에서도 한글이 깨지지 않습니다.
인코딩 관련 자주 묻는 질문
왜 엑셀에서 더블클릭하면 깨지나요?
엑셀은 CSV 파일을 더블클릭해서 열면 시스템 기본 인코딩으로 읽습니다. 한국어 Windows의 기본 인코딩은 EUC-KR(코드 페이지 949)이므로, UTF-8 파일을 열면 깨집니다. 반대로, EUC-KR 파일인데 엑셀이 UTF-8로 읽으려 해도 깨집니다.
Mac에서도 같은 문제가 있나요?
Mac은 기본 인코딩이 UTF-8이라서, EUC-KR 파일을 열 때 깨지는 경우가 더 많습니다. 해결 방법은 같습니다. 메모장 대신 텍스트 편집기(TextEdit)에서 열거나, FreeToolbox CSV 뷰어를 쓰면 됩니다.
CSV를 만들 때 인코딩을 지정할 수 있나요?
대부분의 프로그램에서 "내보내기" 옵션에 인코딩 선택이 있습니다. 앞으로 만들 CSV는 "UTF-8(BOM 포함)"으로 저장하는 습관을 들이면 깨짐 문제를 미리 방지할 수 있습니다.
인코딩 고민 없이 CSV를 바로 열어보세요
CSV 뷰어 바로가기