문자 인코딩 깨짐 해결 방법 총정리 - 한글 깨짐부터 UTF-8 변환까지
엑셀, 메모장, 웹페이지에서 한글이 깨질 때 원인별 해결법을 정리했습니다. 인코딩 원리부터 실전 복구까지 한번에 해결하세요.
![]()
문자 인코딩이란 무엇인가
파일을 열었는데 "¾È³çÇϼ¼¿ä" 같은 알 수 없는 문자가 가득하다면, 문자 인코딩 깨짐 현상을 겪고 있는 겁니다. 업무 중 CSV 파일을 받았는데 한글이 전부 깨져 있거나, 해외 사이트에서 다운로드한 텍스트 파일이 읽을 수 없는 상태라면 누구나 당황할 수밖에 없습니다.
문자 인코딩은 컴퓨터가 텍스트를 저장하고 읽는 약속된 규칙입니다. 컴퓨터는 모든 데이터를 0과 1의 이진수로 저장하는데, "가"라는 글자를 어떤 숫자로 변환할지 정하는 것이 인코딩입니다. 문제는 이 규칙이 하나가 아니라 여러 가지라는 점입니다.
| 인코딩 방식 | 특징 | 한글 지원 | 사용 현황 |
|---|---|---|---|
| UTF-8 | 전 세계 문자 지원, 가변 길이 | 완벽 지원 | 웹 표준 (97% 이상) |
| EUC-KR | 한국어 전용, 2바이트 고정 | 2,350자 제한 | 레거시 한국 사이트 |
| CP949 | EUC-KR 확장판 (MS 윈도우) | 11,172자 | 윈도우 한국어 기본값 |
| ISO-8859-1 | 서유럽 문자 전용 | 미지원 | 일부 영문 시스템 |
저장할 때 사용한 인코딩과 열 때 사용하는 인코딩이 다르면 글자가 깨집니다. A라는 규칙으로 저장한 파일을 B라는 규칙으로 읽으니 엉뚱한 문자가 나타나는 것입니다.
한글 깨짐이 발생하는 주요 원인
문자 인코딩 깨짐 해결의 첫걸음은 원인 파악입니다. 깨지는 상황별로 원인이 다르기 때문에 정확한 진단이 중요합니다.
원인 1: 인코딩 불일치
가장 흔한 경우입니다. UTF-8로 저장된 파일을 EUC-KR로 열거나, 그 반대의 경우 한글이 깨집니다. 특히 윈도우 기본 메모장은 오랫동안 ANSI(CP949)를 기본값으로 사용했기 때문에, 다른 OS에서 만든 파일을 열 때 자주 발생합니다.
원인 2: BOM(Byte Order Mark) 문제
UTF-8에는 BOM이 있는 버전과 없는 버전이 있습니다. 일부 프로그램은 BOM이 없으면 UTF-8 파일을 인식하지 못합니다. 반대로 BOM이 있으면 오류를 일으키는 프로그램도 있습니다.
원인 3: 데이터 전송 중 손상
- 이메일 첨부 파일이 서버를 거치면서 인코딩이 변환되는 경우
- FTP로 파일을 전송할 때 바이너리 모드가 아닌 텍스트 모드를 사용한 경우
- 데이터베이스에서 추출할 때 연결 인코딩 설정이 잘못된 경우
원인 4: 프로그램 기본 설정
- 엑셀은 CSV 파일을 열 때 시스템 기본 인코딩(한국 윈도우는 CP949)을 사용합니다
- 브라우저가 웹페이지의 charset 선언을 무시하거나 잘못 감지하는 경우
- 텍스트 에디터의 자동 감지 기능이 실패하는 경우
핵심 원리: 문자 인코딩 깨짐의 99%는 "저장 인코딩 ≠ 읽기 인코딩" 불일치입니다. 파일 자체가 손상된 경우는 드물고, 올바른 인코딩으로 다시 열면 대부분 복구됩니다.
엑셀과 CSV 파일 한글 깨짐 해결
업무에서 가장 자주 겪는 문자 인코딩 깨짐은 CSV 파일을 엑셀에서 열었을 때입니다. 동료가 보내준 데이터나 시스템에서 내보낸 파일을 열었는데 한글이 모두 깨져 있다면, 아래 방법을 순서대로 시도해 보세요.
방법 1: 엑셀 데이터 가져오기 기능 사용
CSV를 더블클릭으로 열지 말고, 엑셀의 가져오기 기능을 이용하면 인코딩을 직접 지정할 수 있습니다.
- 엑셀 실행 후 데이터 탭 > 텍스트/CSV에서 클릭
- 파일 선택 후 미리보기 화면에서 파일 원본을 "65001: 유니코드(UTF-8)"로 변경
- 미리보기에서 한글이 정상 표시되는지 확인 후 "로드" 클릭
- UTF-8로 안 되면 "949: 한국어"를 선택해 보세요
방법 2: 메모장에서 인코딩 변환 후 열기
간단하지만 확실한 방법입니다.
- CSV 파일을 마우스 오른쪽 버튼 > 연결 프로그램 > 메모장으로 열기
- 한글이 정상 표시되면: 파일 > 다른 이름으로 저장 > 인코딩을 "UTF-8(BOM 포함)"으로 변경 후 저장
- 저장한 파일을 엑셀에서 다시 열면 한글이 정상 출력됩니다
방법 3: 구글 스프레드시트 활용
구글 스프레드시트는 UTF-8 파일을 자동으로 올바르게 인식합니다. CSV를 구글 드라이브에 업로드한 뒤 스프레드시트로 열면 한글이 정상 표시됩니다. 이후 엑셀 형식(.xlsx)으로 다운로드하면 엑셀에서도 문제없이 열 수 있습니다.
웹페이지와 메모장 인코딩 깨짐 해결
웹사이트에서 한글이 깨지거나, 텍스트 파일의 내용이 알아볼 수 없는 상태라면 다음 방법들을 시도해 보세요.
웹페이지 한글 깨짐
브라우저에서 특정 웹페이지의 한글이 깨질 때는 인코딩을 수동으로 변경할 수 있습니다. 크롬의 경우 기본 기능에서 인코딩 변경 메뉴가 제거되었기 때문에, "Charset" 확장 프로그램을 설치하면 원클릭으로 인코딩을 전환할 수 있습니다.
웹페이지를 직접 만드는 경우라면 HTML 파일의 <head> 태그 안에 다음 코드를 반드시 포함하세요.
<meta charset="UTF-8">
이 한 줄이 없으면 브라우저가 인코딩을 잘못 추측해서 한글이 깨질 수 있습니다. 웹 개발을 하신다면 내 서버의 네트워크 환경을 점검하는 것도 중요한데, 내 IP 주소 확인 같은 도구로 접속 환경을 먼저 파악하면 서버 설정 문제를 진단하는 데 도움이 됩니다.
메모장 및 텍스트 에디터 깨짐
Notepad++를 사용하면 인코딩 문제를 가장 쉽게 해결할 수 있습니다.
- Notepad++로 파일 열기
- 하단 상태바에서 현재 인코딩 확인 (예: ANSI, UTF-8 등)
- 인코딩 메뉴 > 인코딩을 UTF-8로 변환 선택
- 한글이 여전히 깨진다면 인코딩 > 문자셋 > 한국어 > EUC-KR로 시도
인코딩 변환 도구와 확인 방법
문자 인코딩 깨짐 해결에 유용한 도구들을 정리했습니다. 상황에 맞는 도구를 선택하세요.
| 도구 | 용도 | 장점 | 비용 |
|---|---|---|---|
| Notepad++ | 텍스트 인코딩 확인/변환 | 실시간 인코딩 전환, 가볍고 빠름 | 무료 |
| Visual Studio Code | 코드/텍스트 인코딩 변환 | 하단바 클릭으로 즉시 변환 | 무료 |
| iconv (리눅스/맥) | 명령줄 인코딩 변환 | 대량 파일 일괄 처리 가능 | 무료 (내장) |
| chardet (파이썬) | 인코딩 자동 감지 | 프로그래밍 연동 가능 | 무료 |
| 구글 스프레드시트 | CSV 인코딩 문제 해결 | 별도 설치 불필요 | 무료 |
Visual Studio Code에서 인코딩 변경
VS Code는 하단 상태바 오른쪽에 현재 파일의 인코딩이 표시됩니다. 이 부분을 클릭하면 "인코딩을 사용하여 다시 열기"와 "인코딩을 사용하여 저장" 두 가지 옵션이 나타납니다. 현재 깨진 파일을 올바르게 보려면 "다시 열기"를, 다른 인코딩으로 변환하려면 "저장"을 선택하세요.
명령줄 도구 iconv 사용법
리눅스나 맥에서는 터미널의 iconv 명령어로 파일 인코딩을 변환할 수 있습니다. 여러 파일을 한 번에 처리해야 할 때 유용합니다.
사용 예시: iconv -f euc-kr -t utf-8 input.txt > output.txt
-f는 원본 인코딩, -t는 변환할 인코딩입니다. 원본 인코딩을 정확히 알아야 변환이 성공합니다. 데이터를 다루는 작업에서는 인코딩뿐 아니라 단위 변환도 자주 필요한데, 단위 변환기 같은 온라인 도구를 활용하면 바이트, 킬로바이트 등 데이터 단위 계산도 빠르게 처리할 수 있습니다.
문자 인코딩 깨짐을 예방하는 습관
매번 깨진 파일을 복구하는 것보다 처음부터 깨지지 않게 만드는 것이 훨씬 효율적입니다. 아래 습관만 들이면 인코딩 문제를 대부분 예방할 수 있습니다.
파일 저장 시 UTF-8 기본 설정
- 메모장: 저장 시 인코딩을 "UTF-8"로 선택하는 습관
- 엑셀: CSV 저장 시 "CSV UTF-8(쉼표로 분리)" 형식 선택
- VS Code: 설정에서 files.encoding을 "utf8"로 지정
- 데이터베이스: 테이블 생성 시 CHARACTER SET utf8mb4 명시
팀 작업 시 인코딩 규칙 통일
협업 환경에서는 팀 전체가 같은 인코딩을 사용해야 합니다. 프로젝트 루트에 .editorconfig 파일을 두면 대부분의 텍스트 에디터가 자동으로 인코딩 설정을 따릅니다.
파일 전송 시 주의사항
- FTP 전송 시 텍스트 파일은 바이너리 모드로 전송
- 이메일 첨부 시 zip으로 압축하면 인코딩 변환 방지
- API 통신 시 Content-Type 헤더에 charset=utf-8 명시
문자 인코딩 깨짐 해결은 결국 "어떤 인코딩으로 저장되었는지 파악하고, 같은 인코딩으로 여는 것"으로 귀결됩니다. UTF-8을 기본으로 사용하고, 팀 내 규칙을 통일하세요. 그래도 깨진 파일을 받았다면 Notepad++나 VS Code에서 인코딩을 바꿔가며 열어보면 거의 모든 경우 복구할 수 있습니다.