글자 깨짐·인코딩 문제와 대처법
CSV 글자 깨짐의 원인과 UTF-8로 바꿔 해결하는 방법을 설명합니다.
문자 인코딩이란
문자 인코딩은 문자(글자, 숫자, 기호)와 파일에 저장할 때 사용하는 바이트 시퀀스 사이의 대응 규칙입니다. 텍스트 파일을 저장할 때 모든 문자가 인코딩에 따라 바이트로 변환됩니다. 파일을 열 때는 그 바이트가 — 이상적으로는 — 동일한 인코딩으로 다시 문자로 변환됩니다.
CSV는 순수 텍스트이므로 파일의 모든 문자에 인코딩이 영향을 미칩니다. 파일을 저장할 때 사용한 인코딩과 열 때 사용하는 인코딩이 다르면 문자가 잘못 해석되어 깨진 기호, 물음표, 사각형(□)으로 표시됩니다. 이것이 “글자 깨짐”입니다.
주요 인코딩과 발생 환경
- UTF-8
- 웹과 현대 시스템의 범용 표준입니다. 모든 언어와 특수 문자를 지원합니다. 대부분의 API, 데이터베이스, 현대 애플리케이션이 UTF-8을 기대합니다. 모든 새 파일에 권장됩니다.
- UTF-8 with BOM
- 파일 시작에 3바이트 접두사(EF BB BF)가 있는 UTF-8입니다. 엑셀은 이 BOM을 사용해 UTF-8 파일을 인식하고 올바르게 엽니다. BOM 없이는 엑셀이 지역 인코딩을 기본으로 사용해 한글 등 비ASCII 문자를 깨뜨릴 수 있습니다. CSV를 엑셀에서 열 경우 UTF-8 BOM을 사용하세요.
- EUC-KR / CP949
- 한국어 텍스트를 위한 레거시 인코딩입니다. 한국어 Windows에서 엑셀의 “CSV(쉼표로 분리)”로 저장하면 EUC-KR(CP949)이 되는 경우가 많습니다. 오래된 데이터베이스나 업무 시스템 내보내기에도 자주 사용됩니다.
- Shift-JIS (CP932)
- 일본어 Windows의 레거시 인코딩입니다. 일본어 ERP 시스템이나 구형 엑셀에서 내보낸 파일에 자주 사용됩니다.
- Windows-1252 (CP1252)
- 영어·프랑스어·독일어·스페인어 등 서유럽 언어를 위한 인코딩입니다. 서유럽 로케일 Windows에서 엑셀의 기본 CSV 인코딩이 UTF-8이 아닌 Windows-1252인 경우가 많습니다.
엑셀이 CSV 글자를 깨뜨리는 이유
엑셀의 CSV 처리는 인코딩 문제의 가장 흔한 원인입니다:
- 저장할 때: 엑셀에서 “다른 이름으로 저장 → CSV(쉼표로 분리)”를 사용하면 UTF-8이 아닌 운영 체제의 기본 지역 인코딩(한국어 Windows에서는 EUC-KR/CP949)으로 파일을 저장합니다. 이 파일을 UTF-8을 기대하는 다른 시스템에서 열면 한글이 깨집니다.
- 열 때: BOM 없는 UTF-8 CSV를 열면 엑셀이 지역 인코딩을 가정해 한글·특수 문자가 깨집니다.
- BOM 해결책: UTF-8 파일이 UTF-8 BOM(EF BB BF)으로 시작하면 엑셀이 UTF-8로 인식하고 올바르게 엽니다. 이것이 엑셀에서 사용할 CSV 파일에 “UTF-8 BOM”이 권장 형식인 이유입니다.
엑셀에서 올바르게 저장하려면: ”다른 이름으로 저장 → CSV UTF-8(쉼표로 분리)(*.csv)”를 선택하세요. 이 옵션이 UTF-8 BOM 파일을 생성합니다.
파일의 인코딩 확인 방법
인코딩 정보는 파일 내용에 저장되지 않으므로 파일 내용만으로 인코딩을 확실하게 알 수는 없습니다. 도구들은 바이트 패턴의 통계 분석으로 추정합니다. 형식·기본 검사에서 감지된 인코딩과 신뢰도를 보여줍니다. 감지가 틀렸다면(미리보기에서 글자가 깨짐) 글자 깨짐 복원에서 수동으로 인코딩을 지정할 수 있습니다.
올바른 인코딩 파악에 도움이 되는 단서:
- 파일이 어디서 만들어졌나요? 한국 시스템 → EUC-KR/CP949 가능성, 일본 시스템 → Shift-JIS 가능성, 서유럽 Windows → Windows-1252 가능성
- 어떤 프로그램으로 내보냈나요? 해당 앱의 내보내기 설정에서 인코딩 옵션을 확인하세요.
- 미리보기에서 올바르게 보이나요? 예상 인코딩을 시도해 시각적으로 확인하세요.
단계별: 깨진 CSV 수정 방법
- 글자 깨짐 복원 열기 — 글자 깨짐 복원으로 이동해 파일을 업로드 영역에 드롭합니다. 서버로 전송되지 않으며 파일은 브라우저 안에서만 처리됩니다.
- 자동 감지 인코딩 확인 — 도구가 원본 인코딩에 대한 최선의 추정을 보여줍니다. 처음 몇 줄의 미리보기를 확인합니다.
- 미리보기가 올바르게 보인다면 — UTF-8 BOM으로 다운로드합니다.
- 미리보기가 여전히 깨진다면 — 드롭다운에서 원본 인코딩을 수동으로 선택합니다. 한국어 파일은 EUC-KR 또는 CP949를, 일본어는 Shift-JIS를, 서유럽어는 Windows-1252를 시도하세요.
- UTF-8 BOM 다운로드 — 다운로드된 파일은 올바른 문자를 가지며 엑셀과 현대 시스템에서 올바르게 열립니다.
- 확인 — 변환된 파일을 형식·기본 검사로 실행해 인코딩이 UTF-8이고 내용이 올바른지 확인합니다.
워크플로에 맞는 인코딩 선택
- 엑셀에서 열 파일인가요? UTF-8 BOM을 사용하세요. 엑셀이 깨짐 없이 안정적으로 여는 유일한 UTF-8 형식입니다.
- 데이터베이스나 API에 가져올 파일인가요? BOM 없는 UTF-8을 사용하세요. 대부분의 현대 시스템은 순수 UTF-8을 기대합니다. 일부 가져오기 도구에서 BOM이 파싱 문제를 일으킬 수 있습니다.
- 대상 시스템이 특정 인코딩을 요구하나요? 해당 인코딩을 사용하세요. 일부 레거시 한국·일본 시스템은 EUC-KR이나 Shift-JIS를 요구합니다. 시스템의 가져오기 문서를 확인하세요.
예방 방법
- 팀의 인코딩 표준을 정하고 문서화하세요(엑셀 워크플로에는 UTF-8 BOM, 나머지에는 순수 UTF-8).
- 엑셀에서 내보낼 때는 항상 “CSV UTF-8(쉼표로 분리)”을 선택하고, 일반 “CSV(쉼표로 분리)”는 사용하지 마세요.
- 외부 출처에서 받은 모든 파일을 사용하기 전에 형식·기본 검사로 인코딩을 확인하세요. 가져오기 후가 아닌 수신 단계에서 잡는 것이 훨씬 효율적입니다.
도구로 열기
- 글자 깨짐 복원 — 자동 감지 후 UTF-8 BOM으로 변환
- 형식·기본 검사 — 감지된 인코딩·구분자 확인
- CSV 단일 검사 — 변환 후 데이터 품질 확인
- CSV 오류 가이드 — 가져오기 실패 전체 체크리스트