본문 바로가기

문자 인코딩 깨짐 해결 방법 총정리 - 한글 깨짐 원인부터 UTF-8 변환까지 완벽 가이드

CSV 파일을 열었더니 한글이 외계어처럼 보이거나 압축 파일 이름이 깨진 적 있으신가요. 인코딩이 어긋나는 진짜 원인과 상황별 복구 방법을 단계별로 정리했습니다.


문자 인코딩 깨짐 해결 방법 총정리 - 한글 깨짐 원인부터 UTF-8 변환까지 완벽 가이드

엑셀에서 CSV를 열었더니 한글이 강남 같은 외계어로 보입니다. 친구가 보낸 압축 파일을 풀었더니 파일 이름이 죄다 깨져 있습니다. 분명 어제까지 멀쩡하던 텍스트 파일이 오늘은 占쏙옙占쏙옙으로 도배되어 있습니다. 한 번이라도 겪어 봤다면 이 글이 도움이 됩니다.

문자 인코딩 깨짐은 운이 나빠서 생기는 일이 아닙니다. 원리만 알면 대부분 1분 안에 복구할 수 있습니다.

왜 문자가 깨질까 - 인코딩의 기본 원리

컴퓨터는 글자를 그대로 저장하지 못합니다. 모든 문자를 숫자(바이트)로 바꿔서 저장하는데, 이 변환 규칙을 인코딩이라고 합니다. 같은 숫자라도 어떤 규칙으로 읽느냐에 따라 전혀 다른 글자가 됩니다.

예를 들어 한글 "가"는 UTF-8로 저장하면 3바이트(EA B0 80), EUC-KR로 저장하면 2바이트(B0 A1)입니다. UTF-8로 저장한 파일을 EUC-KR로 읽으면 바이트 경계가 어긋나면서 엉뚱한 글자가 튀어나옵니다. 이것이 깨짐의 본질입니다.

문자 깨짐의 99%는 "저장한 인코딩"과 "읽는 인코딩"이 다를 때 발생합니다. 파일 자체가 손상된 경우는 생각보다 드뭅니다.

한국에서 자주 마주치는 인코딩 3종

  • UTF-8: 전 세계 표준. 웹, 모바일, 최신 프로그램의 기본값입니다.
  • EUC-KR / CP949: 윈도우 한글 환경에서 오래 쓰인 방식. 구형 프로그램이나 관공서 파일에 아직 많습니다.
  • BOM 포함 UTF-8: 파일 앞에 보이지 않는 표식(EF BB BF)이 붙은 형태. 엑셀 호환에는 유리하지만 일부 프로그램에서는 첫 글자가 깨져 보입니다.

깨진 글자 모양으로 원인 진단하기

깨진 글자의 생김새만 봐도 원인을 좁힐 수 있습니다. 아래 표를 기준으로 진단하면 됩니다.

깨진 모양 예시추정 원인해결 방향
강남, 안녕UTF-8 파일을 EUC-KR로 읽음UTF-8로 다시 열기
°­³², ¾È³éEUC-KR 파일을 UTF-8로 읽음EUC-KR(CP949)로 다시 열기
占쏙옙, ?????이미 변환 과정에서 손실됨원본 파일에서 재변환 필요
첫 글자만 깨짐BOM이 글자로 읽힘BOM 제거 후 저장
참고: 물음표(?)나 네모(□)로 바뀐 글자는 이미 정보가 사라진 상태라 복구가 어렵습니다. 이 경우는 변환된 파일이 아니라 원본을 찾아 다시 작업해야 합니다.

상황별 문자 인코딩 깨짐 해결 방법

1. 텍스트 파일(.txt, .csv)이 깨질 때

메모장 대신 VS CodeNotepad++를 쓰면 가장 확실합니다. VS Code는 우측 하단에 현재 인코딩이 표시되는데, 그 부분을 클릭하고 "Reopen with Encoding"을 선택해 UTF-8 또는 EUC-KR로 바꿔 가며 멀쩡하게 보이는 인코딩을 찾으면 됩니다. 제대로 보이면 다시 "Save with Encoding"으로 원하는 인코딩으로 저장합니다.

2. 엑셀에서 CSV 한글이 깨질 때

엑셀은 CSV를 무조건 시스템 기본 인코딩으로 읽기 때문에 UTF-8 CSV가 자주 깨집니다. 두 가지 해법이 있습니다.

  • CSV를 BOM 포함 UTF-8로 저장하면 엑셀이 자동으로 UTF-8로 인식합니다.
  • 엑셀의 "데이터 - 텍스트/CSV 가져오기" 메뉴를 이용해 가져올 때 인코딩을 직접 지정합니다.

3. 압축 파일 이름이 깨질 때

윈도우 기본 압축 도구는 ZIP 내부 파일명을 EUC-KR로 가정합니다. 그래서 맥이나 리눅스에서 만든 UTF-8 ZIP을 풀면 이름이 깨집니다. 반디집이나 7-Zip에서 압축 해제 시 인코딩을 수동으로 지정하면 정상적으로 풀립니다.

4. 데이터를 직접 확인하고 싶을 때

특정 문자열이 어떤 바이트로 이뤄졌는지 직접 들여다보면 원인 파악이 빨라집니다. 텍스트를 바이트 단위로 확인하거나 인코딩 형태를 비교할 때는 Base64 인코더 같은 변환 도구로 데이터를 한 번 인코딩해 보면 깨짐 여부를 명확히 구분할 수 있습니다.

팁: 깨진 파일을 다룰 때는 원본을 절대 덮어쓰지 마세요. 반드시 복사본을 만든 뒤 변환을 시도해야 합니다. 잘못 저장하면 원본까지 손실됩니다.

인코딩 변환에 자주 쓰는 도구

상황에 따라 적합한 도구가 다릅니다. 무료로 쓸 수 있는 것들 위주로 정리했습니다.

도구용도특징
VS Code텍스트/코드 파일인코딩 확인과 재저장이 직관적
Notepad++텍스트 파일인코딩 메뉴에서 변환과 BOM 제어 가능
반디집 / 7-Zip압축 파일해제 시 인코딩 수동 지정
iconv (명령어)대량 일괄 변환리눅스/맥 기본 제공

개발자라면 명령어 한 줄로 끝낼 수도 있습니다. 예를 들어 EUC-KR 파일을 UTF-8로 바꾸려면 iconv -f EUC-KR -t UTF-8 입력.txt > 출력.txt 형태로 처리합니다. 파일이 수십 개라면 이 방식이 가장 빠릅니다.

깨짐을 예방하는 작업 습관

매번 복구하는 것보다 애초에 깨지지 않게 하는 편이 낫습니다. 다음 습관만 지켜도 인코딩 문제의 대부분이 사라집니다.

  • 새 파일은 가능한 한 UTF-8로 통일합니다. 협업할 때 특히 중요합니다.
  • 웹 페이지를 만든다면 HTML 상단에 meta charset="utf-8"을 반드시 넣습니다.
  • 엑셀과 주고받을 CSV는 처음부터 BOM 포함 UTF-8로 저장합니다.
  • 다른 사람에게 파일을 보낼 때 어떤 인코딩인지 한 줄 적어 주면 상대방의 시간을 아껴 줍니다.

지금 깨진 파일이 있다면, 먼저 복사본을 만들고 VS Code에서 인코딩을 바꿔 가며 열어 보세요. 멀쩡하게 보이는 인코딩을 찾았다면 그대로 UTF-8로 다시 저장하면 끝입니다. 앞으로의 작업은 UTF-8로 통일하는 것만으로 같은 문제를 거의 막을 수 있습니다.

3일 무료체험큰손탐지기, 지금 바로 시작하세요

설치 없이 웹에서 바로 사용 가능 · PC & 모바일 지원

무료체험 시작
카카오톡 상담