1. 문자 <-> 비트 양방향 변환 매커니즘
문자 집합
: 컴퓨터가 알아들을 수 있는 문자의 집합이다.
문자 집합은 문자와 숫자의 일대일 대응표인데, 문자마다 대응하는 숫자로 변환되어 컴퓨터가 이해한다.
문자 집합에 있지 않은 문자는 컴퓨터가 이해하지 못한다.
인코딩
: 문자를 숫자(특히 컴퓨터가 알아듣는 bit열)로 변환하는 과정을 인코딩이라 한다.
디코딩
: 숫자를 문자로 다시 재변환하는 과정을 디코딩이라 한다.
컴퓨터 과학에서 쓰이는 모든 문자 <-> 비트열 변환 서비스는 모두 위의 매커니즘을 따른다.
2. 종류
- 아스키 코드
- EUC-KR
- 유니코드와 UTF 시리즈
(1) 아스키 코드
초창기 문자 집합 중 하나로 $2^{7}$ , 즉 7비트로 문자를 표현한다.
- 표 참고: 위키피디아-아스키코드
A. 구성
총 8비트로 이루어져 있으며 다음과 같이 구성된다.
- 1비트: 패리티 비트라 불리며, 오류 검출을 위해 사용되는 비트이다.
- 7비트: 실제 문자 값을 표현하는데 쓰인다.
B. 한계
128개의 문자밖에 표현 못해서 영어를 제외한 다른 언어와 많은 특수문자를 표현하지 못한다.
(2) EUC-KR
한글을
음절 하나를 2byte로 나타냄.
완성형 인코딩 방식으로 변환하는 인코딩 방식음절 하나를 2byte로 나타냄.
A. 한계
일상생활에서 나올 수 있는 완성된 음절 하나를 한 번에 비트로 변환하기 때문에 한국어에서 쓰이지 않지만, 이론상 쓸 수 있는 글자 (ex - 뷁, 쀓 등)는 EUC-KR 문자 집합에 등록되어 있지 않아 표현하지 못하는 한계가 있다.
(3) 유니코드
세상에 있는 모든 문자를 고유한 숫자 값과 대응시킨 통일된 표준 문자집합
(우리나라 언어에 대해서는 완성형 인코딩과 조합형 인코딩 모두 가능하게 음절과 초중종성 다 숫자로 대응시켜 놓았다.)
(우리나라 언어에 대해서는 완성형 인코딩과 조합형 인코딩 모두 가능하게 음절과 초중종성 다 숫자로 대응시켜 놓았다.)
A. 등장 이유
위의
EUC-KR 과 같이 각 나라 문자별 인코딩 방식이 다 따로 존재했다면, 다국어 서비스에서는 서비스하는 언어별 인코딩 방식을 모두 알아야 하는 번거로움이 있었다. 따라서 전세계 모든 문자를 고유한 숫자 값으로 표현하는 통일된 기준인 유니코드가 등장했다.B. 유니코드 인코딩 방식 - UTF 시리즈
유니코드는 문자와 비트열을 대응시켜놓은 문자집합에 불과할 뿐 어떻게 인코딩과 디코딩이 이루어질지에 대해 정의하지 않았다. 이를 인,디코딩 하는 방법에는 각각
UTF-8, UTF-16, UTF-32 등의 방법이 있다.C. UTF-8
대표적으로 UTF-8에 대해서 알아보면, 문자를 숫자와 대응시켰을 때, 그 크기에 따라 비트열 사이즈를 가변적으로 늘리는 인코딩 방식이다.
- 문자값의 유니코드 대응 숫자 크기가 0 ~ 007F(16)이면 1바이트로 표현
- 문자값의 유니코드 대응 숫자 크기가 0080 ~ 07FF(16)이면 2바이트로 표현
- 문자값의 유니코드 대응 숫자 크기가 0800 ~ FFFF(16)이면 3바이트로 표현
- 문자값의 유니코드 대응 숫자 크기가 10000(16) ~ 10FFFF(16)이면 4바이트로 표현
First code point | Last code point | Byte 1 | Byte 2 | Byte 3 | Byte 4 |
U+0000 | U+007F | 0yyyzzzz | ㅤ | ㅤ | ㅤ |
U+0080 | U+07FF | 110xxxyy | 10yyzzzz | ㅤ | ㅤ |
U+0800 | U+FFFF | 1110wwww | 10xxxxyy | 10yyzzzz | ㅤ |
U+010000 | U+10FFFF | 11110uvv | 10vvwwww | 10xxxxyy | 10yyzzzz |
앞 각 바이트 표기마다 앞에 1과 0의 비트는 고정적으로 붙어있다. -> 비트를 나눠 표현하기 위함인 듯 하다.
부록
A. 모르는 것 정리
코드 포인트
: 문자 집합에서 하나의 문자에 부여된 고유한 숫자값을 코드 포인트라고 한다.
완성형 인코딩
: 한국어의 음절 하나가 하나의 숫자와 대응하는 인코딩 방식
조합형 인코딩
: 한국어의 초성,중성,종성 즉 자음 모음 하나가 하나의 숫자와 대응하는 인코딩 방식
⬅️ 이전 글
➡️ 다음 글