글자가 ''로 깨지는 이유, UTF-8과 EUC-KR 인코딩 차이 완벽 정리
개발 공부를 막 시작했거나, 웹사이트를 만들거나, 외국어 문서를 다루다 보면 한 번쯤은 '인코딩'이라는 단어와 마주치게 되는데요. 분명 한글로 저장했는데 다시 열어보니 알 수 없는 기호와 문자로 바뀌어 있는 난감한 상황! 저도 처음엔 정말 당황스러웠어요. 대체 컴퓨터는 '가'라는 글자를 어떻게 알아듣길래 이런 일이 생기는 걸까요? 오늘은 컴퓨터가 글자를 이해하는 방식, 인코딩의 세계로 여러분을 안내할게요! 😊
인코딩이 뭐길래 글자가 깨질까요? 💻
컴퓨터는 우리가 쓰는 '가', 'A', '😊' 같은 문자를 직접 이해하지 못해요. 오직 0과 1로 이루어진 숫자(바이너리 코드)만 이해할 수 있죠. 그래서 각 문자에 고유한 숫자를 짝지어주는 규칙표가 필요한데, 이 규칙표 또는 변환 과정을 바로 '인코딩(Encoding)'이라고 부릅니다.
반대로 컴퓨터가 가진 숫자 코드를 사람이 읽을 수 있는 문자로 다시 보여주는 과정을 '디코딩(Decoding)'이라고 해요. 글자가 깨지는 현상은 바로 이 인코딩 방식과 디코딩 방식이 일치하지 않을 때 발생합니다. 마치 암호를 만들 때 쓴 규칙과 풀 때 쓴 규칙이 다른 것과 똑같아요!
- 인코딩: 문자 → 숫자 (컴퓨터가 이해할 수 있도록 변환)
- 디코딩: 숫자 → 문자 (사람이 볼 수 있도록 변환)
글자 깨짐은 A규칙(예: EUC-KR)으로 인코딩된 파일을 B규칙(예: UTF-8)으로 디코딩하려고 할 때 발생합니다.
EUC-KR vs UTF-8, 무엇이 다른가요? 🆚
한글 인코딩 방식에서 가장 대표적인 두 가지가 바로 EUC-KR과 UTF-8입니다. 두 방식의 가장 큰 차이점은 표현할 수 있는 문자의 범위와 사용하는 용량에 있어요.
| 구분 | EUC-KR (완성형) | UTF-8 (조합형) |
|---|---|---|
| 문자 범위 | 한글, 영문, 일부 특수문자만 가능 (2,350자) ‘뷁’, ‘럁’ 등 표현 불가 |
전 세계 거의 모든 문자 표현 가능 각국 언어, 이모지(😊) 등 포함 |
| 용량 | 한글: 2바이트 / 영문: 1바이트 | 한글: 3바이트 / 영문: 1바이트 (가변 길이) |
| 특징 | 과거 국내 표준, 용량이 상대적으로 작음 호환성 문제 발생 가능 |
현재 웹 표준, 뛰어난 호환성 다국어 환경에 필수적 |
과거에는 용량을 아끼기 위해 EUC-KR을 많이 사용했지만, 지금은 전 세계적으로 UTF-8 사용이 표준으로 자리 잡았습니다. 다국어 지원과 호환성 면에서 월등하기 때문이죠.
글자 깨짐() 현상의 주된 원인 🧐
글자 깨짐 현상은 왜 발생하는 걸까요? 가장 흔한 두 가지 시나리오를 통해 알아볼게요.
사례 1: EUC-KR 문서를 UTF-8로 열었을 때 📝
EUC-KR에서 한글 '가'는 2바이트(B0 A1)로 표현됩니다. 하지만 UTF-8 규칙으로 이 숫자를 해석하려고 하면, 각각의 바이트(B0, A1)에 해당하는 문자를 찾으려고 시도합니다. UTF-8 규칙표에는 이 숫자들에 해당하는 글자가 없거나 엉뚱한 문자가 지정되어 있어, 결국 글자가 깨지거나 '' (대체 문자)로 보이게 됩니다.
사례 2: UTF-8 문서를 EUC-KR로 열었을 때 📝
UTF-8에서 한글 '가'는 3바이트(EA B0 80)로 표현됩니다. 반면 EUC-KR은 한글을 무조건 2바이트 단위로 해석하려고 합니다. 3바이트짜리 정보를 2바이트씩 끊어서 읽으려고 하니 당연히 규칙이 맞지 않고, 전혀 다른 글자로 해석되어 깨져버립니다. 특히 이모지(😊)처럼 EUC-KR에 아예 존재하지 않는 문자는 100% 깨지게 됩니다.
웹사이트 제작 시 HTML 문서 상단에 `` 코드를 명시하는 것이 매우 중요합니다. 이 코드는 웹 브라우저에게 "이 문서는 UTF-8 규칙으로 해석해주세요!"라고 알려주는 역할을 하여 글자 깨짐을 사전에 방지합니다.
간단한 글자 깨짐 해결 방법 🛠️
만약 글자가 깨진 파일을 마주쳤다면 어떻게 해야 할까요? 가장 간단한 방법은 파일의 인코딩 방식을 직접 바꿔주는 것입니다.
- 텍스트 편집기 활용: 윈도우 메모장의 경우 '파일 > 다른 이름으로 저장'을 누르면 하단에 인코딩을 선택하는 옵션이 있습니다. 여기서 'UTF-8' 또는 'ANSI'(EUC-KR)를 선택해 다시 저장하면 됩니다. Visual Studio Code 같은 전문 편집기에서는 우측 하단에서 인코딩 방식을 쉽게 변경할 수 있습니다.
- 웹 브라우저 설정 변경: 크롬 브라우저의 경우 '도구 더보기 > 인코딩' 메뉴에서 페이지의 인코딩을 직접 변경해 볼 수 있었지만, 최신 버전에서는 자동 감지 기능이 강화되어 해당 메뉴가 사라졌습니다. (필요시 확장 프로그램을 사용할 수 있습니다.)
- 온라인 변환 도구 사용: 웹사이트에서 제공하는 무료 인코딩 변환 도구를 사용해 깨진 텍스트를 붙여넣고 원하는 인코딩으로 변환하는 방법도 편리합니다.
인코딩 문제 핵심 요약
자주 묻는 질문 ❓
인코딩, 처음에는 외계어 같고 어렵게 느껴지지만 알고 보면 간단한 '규칙'의 문제랍니다. 이제 글자 깨짐 현상을 만나도 당황하지 않고 자신 있게 해결하실 수 있겠죠? 더 궁금한 점이 있다면 언제든 댓글로 질문해주세요! 😊

댓글
댓글 쓰기