본문 바로가기
카테고리 없음

아스키 코드 vs 유니코드 차이점 (문자 표현)

by tech-korea 2026. 2. 17.

개발을 하다 보면 한글이 깨져서 `` 같은 물음표나 `믜??` 같은 외계어로 나오는 현상을 한 번쯤 겪어보셨을 겁니다. 이를 '인코딩(Encoding) 문제'라고 합니다. 컴퓨터는 0과 1밖에 모르는 계산기인데, 도대체 어떻게 '가', 'A', '💖' 같은 문자를 화면에 보여주는 걸까요? 그 비밀은 바로 문자와 숫자를 1:1로 매칭시켜 놓은 약속(Code)에 있습니다. 오늘은 문자 인코딩의 역사이자 표준인 아스키(ASCII)유니코드(Unicode)의 탄생 배경과 결정적인 차이를 알아보겠습니다.

1. 아스키 코드 (ASCII): 미국 중심의 1세대 표준

1960년대, 컴퓨터 통신을 위해 미국 표준 협회(ANSI)는 문자를 숫자로 표현하는 표준을 만들었습니다. 이것이 ASCII(American Standard Code for Information Interchange)입니다.

1-1. 구조와 한계

아스키코드는 7비트(bit)를 사용합니다. 7비트로 표현할 수 있는 경우의 수는 $2^7 = 128$가지입니다. - 0~31번: 제어 문자 (Enter, Tab 등) - 32~127번: 영어 대소문자, 숫자, 특수 기호 이 128개면 영어를 쓰는 미국에서는 아무 문제가 없었습니다. 하지만 컴퓨터가 전 세계로 보급되자 문제가 터집니다. "한글, 한자, 아랍어는 어떻게 쓰지?" 1바이트(8비트) 중 남은 1비트를 써서 256개로 늘려봐도, 수만 자가 넘는 전 세계 언어를 담기엔 턱없이 부족했습니다. 그래서 각 나라는 자신들만의 독자적인 인코딩(예: 한국의 EUC-KR)을 만들기 시작했고, 서로 호환이 안 되어 글자가 깨지는 대혼란(Mojibake)이 발생했습니다.

2. 유니코드 (Unicode): 전 세계 문자의 통합

이 혼란을 잠재우기 위해 전 세계의 모든 문자를 하나의 통일된 문자 집합에 담자는 프로젝트가 시작되었습니다. 이것이 유니코드(Unicode)입니다. 유니코드는 `U+AC00`처럼 16진수 숫자로 전 세계 모든 글자에 고유한 번호를 부여했습니다. 여기에는 한글, 한자, 일본어는 물론이고 이모지(😀)까지 포함됩니다.

3. UTF-8이란 무엇인가? (인코딩 방식)

유니코드는 "이 글자는 몇 번이다"라는 번호(매핑)일 뿐이고, 이를 실제로 컴퓨터 파일에 저장(0과 1로 변환)하는 방식이 필요합니다. 그중 가장 표준으로 쓰이는 방식이 바로 UTF-8입니다.

3-1. 가변 길이 인코딩

UTF-8의 가장 큰 특징은 글자에 따라 사용하는 용량이 달라진다는 점입니다. - 영어/숫자 (아스키 영역): 기존 아스키코드와 호환되도록 1바이트만 씁니다. (효율성 극대화) - 한글/한자 등: 보통 3바이트를 사용합니다. 만약 모든 글자를 무조건 3바이트나 4바이트로 저장했다면(UTF-32), 영어로 된 문서는 용량이 4배로 뻥튀기되었을 것입니다. UTF-8은 영어를 쓸 때는 용량을 아끼고, 필요한 문자에만 용량을 더 쓰는 합리적인 방식을 채택하여 웹 표준이 되었습니다.

4. 개발자가 알아야 할 상식: EUC-KR vs UTF-8

한국 웹 개발 환경에서는 아직도 이 두 가지가 충돌하곤 합니다. - EUC-KR: 과거 한국에서 독자적으로 만든 완성형 코드. '믜', '햏' 같이 자주 안 쓰는 한글 2,350자 이외의 글자는 표현이 불가능하여 깨집니다. - UTF-8: 모든 한글(11,172자) 표현 가능. 현재의 표준. 따라서 HTML 파일을 작성할 때는 반드시 ``을 선언하여 브라우저에게 "이 문서는 UTF-8로 읽어줘"라고 알려줘야 글자 깨짐을 막을 수 있습니다.

[핵심 요약]
1. 아스키코드는 영문/숫자 표현을 위한 7비트 초기 표준으로, 다국어 표현이 불가능했습니다.
2. 유니코드는 전 세계 모든 문자에 고유 번호를 부여한 통합 표준입니다.
3. UTF-8은 유니코드를 저장하는 방식으로, 영문은 1바이트, 한글은 3바이트를 쓰는 가변 길이 방식입니다.