텍스트 인코딩 쉽게 이해하기 — UTF-8, EUC-KR, BOM
작성일:
컴퓨터는 글자를 그대로 저장하지 못하고 **숫자(바이트)**로 바꿔 저장합니다. 글자를 어떤 숫자로 바꿀지 정한 규칙이 인코딩입니다. 같은 파일이라도 저장할 때와 열 때 쓰는 규칙이 다르면 글자가 깨집니다.
대표적인 인코딩
| 인코딩 | 특징 | 한글 한 글자 |
|---|---|---|
| ASCII | 영어 알파벳·숫자·기호만 표현하는 가장 오래된 규칙 | 표현 불가 |
| EUC-KR / CP949 | 한국어 Windows가 오래 써 온 규칙. CP949는 EUC-KR을 넓혀 모든 한글 조합을 담음 | 2바이트 |
| UTF-8 | 전 세계 문자를 담는 국제 표준. 웹페이지의 대부분이 사용 | 3바이트 |
| UTF-16 | Windows 내부와 일부 프로그램이 쓰는 유니코드 방식 | 2바이트 |
영어 알파벳은 세 방식에서 모두 같은 숫자로 저장되기 때문에, 영어는 멀쩡한데 한글만 깨지는 일이 생깁니다.
BOM이란?
BOM(Byte Order Mark)은 파일 맨 앞에 붙는 작은 표시입니다. UTF-8의 BOM은 EF BB BF 3바이트이며, “이 파일은 UTF-8이다”라는 이름표 역할을 합니다.
- 장점: 한국어 엑셀이나 오래된 Windows 프로그램이 UTF-8 파일을 올바르게 알아봅니다.
- 단점: 일부 프로그래밍 도구나 서버 설정 파일에서는 BOM이 맨 앞의 이상한 글자로 취급되기도 합니다.
그래서 엑셀에서 열 CSV에는 BOM을 붙이고, 프로그램이 읽을 파일에는 붙이지 않는 것이 일반적입니다. 이 사이트의 텍스트 출력 변환기들은 옵션에서 BOM 포함 여부를 고를 수 있습니다.
깨진 모양으로 원인 알아내기
깨진 글자의 모양을 보면 어떤 착오가 있었는지 짐작할 수 있습니다.
| 이렇게 보인다면 | 원인 |
|---|---|
안녕, é처럼 라틴 문자가 섞임 |
UTF-8 파일을 서유럽(Windows-1252) 방식으로 읽음 |
�가 반복됨 |
EUC-KR 파일을 UTF-8로 읽음 (해석할 수 없는 바이트) |
¾È³ç처럼 기호가 섞임 |
EUC-KR 파일을 서유럽 방식으로 읽음 |
| 깨진 글자가 저장할 때마다 더 길어짐 | 잘못 읽은 상태로 다시 저장한 경우(이중 인코딩) |
중요한 점은, 이 상태로 저장하면 깨진 글자가 그대로 파일에 기록된다는 것입니다. 글자가 깨져 보이면 저장하지 말고 닫으세요.
옛날 한글 텍스트 파일이 많은 이유
2000년대에 만든 TXT 소설, 메모, 자막 파일은 대부분 EUC-KR(CP949)로 저장되어 있습니다. 당시 Windows 메모장의 기본값이었기 때문입니다. 요즘 프로그램과 스마트폰은 UTF-8을 기본으로 쓰므로 이런 파일을 열면 한글이 깨지기 쉽습니다.
이 사이트의 TXT → EPUB, TXT → DOCX, CSV → XLSX 변환기는 파일을 읽을 때 다음 순서로 인코딩을 판별합니다.
- 파일 앞에 BOM이 있으면 그 정보를 따릅니다.
- UTF-8 규칙에 정확히 맞으면 UTF-8로 읽습니다.
- 그렇지 않으면 EUC-KR(CP949), Shift_JIS(일본어), GB18030(중국어), Windows-1251(러시아어) 순서로 시험해 보고, 그 언어의 글자로 자연스럽게 읽히는 것을 고릅니다.
- 모두 아니면 서유럽(Windows-1252) 방식으로 읽습니다.
판별이 틀리는 드문 경우를 위해 옵션에서 인코딩을 직접 고를 수도 있습니다.
지금 파일이 어떤 인코딩인지 확인하려면
- Windows 메모장: 파일을 열면 오른쪽 아래 상태 표시줄에
UTF-8,UTF-8(BOM),ANSI등이 표시됩니다. 한국어 Windows에서ANSI는 CP949를 뜻합니다. - VS Code: 오른쪽 아래에 인코딩이 표시되고, 눌러서 다른 인코딩으로 다시 열어 볼 수 있습니다.
정리
글자 깨짐은 “저장한 규칙”과 “여는 규칙”이 다를 때 생깁니다. 새로 만드는 파일은 UTF-8로 저장하고, 엑셀용 CSV에는 BOM을 붙이세요. 옛날 EUC-KR 파일은 인코딩을 자동 판별하는 변환기로 UTF-8 문서나 EPUB으로 바꿔 두면 어디서나 깨지지 않습니다.