문자 인코딩 깨짐 해결 방법 총정리 - 외계어로 보이는 한글 깨짐 원인부터 복구까지
메모장을 열었더니 한글이 외계어로 보이나요? UTF-8과 EUC-KR 차이부터 메모장, 엑셀 CSV, 압축 파일명까지 상황별 문자 인코딩 깨짐 해결 방법을 증상 진단표와 함께 정리했습니다.
![]()
분명 어제까지 멀쩡하던 문서였는데, 오늘 열어보니 한글이 전부 외계어로 바뀌어 있는 경험 다들 한 번쯤 있으실 겁니다. 거래처에서 받은 CSV 파일이 엑셀에서 깨져 보이거나, 압축을 풀었더니 파일 이름이 전부 이상한 기호로 변해 있을 때의 당혹감은 겪어본 사람만 압니다. 다행히 문자 인코딩 깨짐 해결은 원리만 이해하면 대부분 몇 분 안에 끝나는 문제입니다. 파일이 망가진 것이 아니라, 컴퓨터가 글자를 잘못 해석하고 있는 상태이기 때문입니다.
한글이 외계어로 보이는 이유 - 인코딩의 기본 원리
컴퓨터는 글자를 글자 그대로 저장하지 않습니다. 모든 문자를 숫자로 바꿔서 저장하는데, 이때 어떤 글자를 어떤 숫자로 바꿀지 정해둔 규칙이 바로 문자 인코딩입니다. 한글 환경에서 주로 만나는 인코딩은 두 계열입니다.
EUC-KR과 CP949
1990년대부터 한국어 윈도우에서 사용해 온 방식입니다. EUC-KR은 완성형 한글 2,350자를 표현하고, 마이크로소프트가 이를 확장한 CP949는 현대 한글 11,172자를 모두 담습니다. 한글 한 글자를 2바이트로 저장하며, 윈도우에서 말하는 ANSI 인코딩이 사실상 CP949입니다.
UTF-8
전 세계 모든 문자를 하나의 체계로 담는 유니코드 기반 인코딩입니다. 현재 웹 표준이며, W3Techs 통계 기준 전 세계 웹사이트의 약 98%가 UTF-8을 사용합니다. 한글 한 글자를 3바이트로 저장합니다.
문제는 저장할 때 쓴 규칙과 읽을 때 쓴 규칙이 서로 다를 때 생깁니다. UTF-8로 저장된 3바이트짜리 한글을 EUC-KR 규칙으로 2바이트씩 끊어 읽으면, 전혀 엉뚱한 글자가 조합되어 화면에 나타납니다. 이것이 우리가 보는 외계어의 정체입니다.
인코딩 깨짐의 대부분은 저장 규칙과 해석 규칙의 불일치가 원인입니다. 파일 내용 자체는 그대로 남아 있는 경우가 많아서, 올바른 인코딩으로 다시 읽기만 하면 복구됩니다. 단, 깨진 상태 그대로 다시 저장해 버리면 원본 정보가 사라지므로 절대 저장부터 하면 안 됩니다.
깨진 모양만 봐도 원인이 보인다 - 증상별 진단표
깨진 글자의 생김새는 원인을 알려주는 힌트입니다. 아래 표에서 내 파일의 증상과 비교해 보세요.
| 깨짐 증상 예시 | 원인 | 복구 가능성 |
|---|---|---|
| 臾몄옄 처럼 한자가 섞여 보임 | UTF-8 파일을 EUC-KR(ANSI)로 해석 | 높음 - UTF-8로 다시 열면 정상 |
| ë¬¸ìž 처럼 라틴 특수문자로 보임 | UTF-8 파일을 서유럽(Latin-1) 인코딩으로 해석 | 높음 - UTF-8로 다시 열면 정상 |
| 한글만 전부 ? 물음표로 표시 | 해당 문자를 지원하지 않는 인코딩으로 변환하며 저장됨 | 낮음 - 원본 파일 필요 |
| 占쏙옙 이 반복해서 나타남 | 잘못된 변환 결과가 이미 저장까지 완료된 상태 | 낮음 - 원본 파일 필요 |
위쪽 두 가지 증상이라면 파일은 무사합니다. 해석 방법만 바꾸면 됩니다. 아래쪽 두 가지라면 이미 정보가 손실된 상태라서 백업본이나 보낸 사람의 원본을 다시 받는 것이 가장 빠릅니다.
메모장, 텍스트 파일 깨짐 해결 방법
텍스트 파일이 깨져 보일 때는 인코딩을 바꿔서 다시 여는 것이 기본입니다.
윈도우 메모장에서 해결하기
메모장에서 파일을 연 뒤 글자가 깨져 있다면, 파일 - 다른 이름으로 저장 화면 하단의 인코딩 항목을 확인해 보세요. 현재 파일이 어떤 인코딩으로 해석되고 있는지 나옵니다. 열기 단계에서 인코딩을 직접 지정하려면 파일 - 열기 대화상자 하단의 인코딩 드롭다운에서 ANSI 또는 UTF-8을 바꿔가며 열어보면 됩니다.
Notepad++로 정밀하게 진단하기
무료 에디터인 Notepad++를 쓰면 훨씬 정확합니다. 메뉴의 인코딩 탭에는 두 가지 기능이 구분되어 있습니다.
- 인코딩으로 해석(문자 집합 선택): 파일 내용은 그대로 두고 읽는 규칙만 바꿉니다. 깨진 파일 복구는 반드시 이걸로 시작하세요.
- 인코딩 변환: 현재 화면에 보이는 내용을 기준으로 실제 데이터를 바꿉니다. 정상적으로 보이는 상태에서만 사용해야 합니다.
- 해석을 한국어(EUC-KR)로 바꿨을 때 정상으로 보이면, 그 상태에서 UTF-8로 변환 후 저장하면 앞으로 깨질 일이 없습니다.
엑셀 CSV와 압축 파일명 깨짐 해결
엑셀에서 CSV 한글이 깨질 때
쇼핑몰 주문 내역이나 통계 데이터를 CSV로 내려받아 엑셀에서 열면 한글이 깨지는 경우가 많습니다. 원인은 대부분 하나입니다. 파일은 UTF-8인데, 엑셀이 BOM(파일 맨 앞의 인코딩 표식)이 없는 CSV를 ANSI로 해석하기 때문입니다. 해결 방법은 세 가지입니다.
- 엑셀의 데이터 탭 - 텍스트/CSV 가져오기를 사용하고, 파일 원본 항목을 65001: 유니코드(UTF-8)로 지정해서 불러오기
- CSV를 메모장으로 연 뒤 다른 이름으로 저장에서 인코딩을 UTF-8(BOM)으로 바꿔 저장한 다음 엑셀에서 열기
- 내가 CSV를 만들어 배포하는 입장이라면, 엑셀 저장 형식 중 CSV UTF-8(쉼표로 분리)를 선택해서 처음부터 BOM 포함으로 저장하기
압축 풀었더니 파일 이름이 깨질 때
맥이나 리눅스에서 만든 ZIP 파일을 윈도우 기본 압축 해제로 풀면 파일 이름이 깨지는 경우가 흔합니다. ZIP 규격이 파일명 인코딩을 강제하지 않아서 생기는 문제입니다. 반디집 같은 압축 프로그램은 파일명 코드 페이지를 자동 감지하고, 압축 풀기 창에서 직접 지정할 수도 있어서 이 문제를 깔끔하게 해결합니다.
웹페이지와 개발 환경에서 깨짐 예방하기
직접 웹페이지나 프로그램을 만드는 경우라면 처음부터 UTF-8로 통일하는 것이 정답입니다. 점검할 지점은 네 곳입니다.
- HTML 문서: head 안에 meta charset="UTF-8" 선언이 있는지, 실제 파일 저장 인코딩과 일치하는지 확인
- 데이터베이스: MySQL이라면 utf8이 아닌 utf8mb4를 사용해야 이모티콘 같은 4바이트 문자까지 안전합니다
- 에디터: VS Code는 기본값이 UTF-8이지만, 팀원 중 다른 에디터를 쓰는 사람이 있다면 프로젝트 설정으로 강제하는 것이 좋습니다
- 서버 응답 헤더: Content-Type에 charset=utf-8이 포함되어 있는지 확인
새로 만든 페이지의 인코딩 설정을 점검할 때는 실제 데이터가 들어오기 전에 더미 텍스트로 미리 확인해 보는 것이 안전합니다. Lorem Ipsum 생성기로 만든 임시 문단에 한글 문장을 섞어 넣고 여러 브라우저에서 열어보면, 배포 전에 인코딩 문제를 걸러낼 수 있습니다.
인코딩 사고를 막는 5가지 습관
복구보다 예방이 훨씬 쌉니다. 아래 다섯 가지만 지켜도 인코딩 때문에 시간을 버리는 일이 크게 줄어듭니다.
- 새로 만드는 모든 텍스트 파일은 UTF-8로 저장하는 것을 기본값으로 삼기
- 깨진 파일을 발견하면 절대 바로 저장하지 말고, 해석 인코딩부터 바꿔보기
- CSV를 외부에 전달할 때는 BOM 포함 UTF-8인지 확인하고 보내기
- 중요한 원본 파일은 변환 작업 전에 반드시 사본을 만들어 두기
- 구형 시스템과 파일을 주고받는 경우, 상대 시스템의 인코딩을 미리 물어보고 맞추기
텍스트를 다듬는 자잘한 작업이 잦다면 설치형 프로그램 대신 브라우저에서 바로 처리하는 것도 방법입니다. 대소문자 변경이나 문자열 정리가 필요할 때 텍스트 변환기 같은 웹 도구를 쓰면 프로그램 설치나 저장 인코딩 걱정 없이 결과만 복사해서 쓸 수 있습니다.
지금 바로 두 가지만 해보세요. 첫째, 평소 쓰는 에디터의 기본 저장 인코딩이 UTF-8인지 확인하세요. 둘째, 지금 깨져 있는 파일이 있다면 저장하지 말고 Notepad++에서 해석 인코딩을 EUC-KR과 UTF-8로 번갈아 바꿔보세요. 열에 아홉은 그 자리에서 멀쩡한 원문이 돌아옵니다.