- ASCII : 7비트 문자 (American Standard Code for Information Interchange)
U+0000 ~ U+007F(ISO 646 IRV)
- Latin-1 : U+0000 ~ U+00FF (ISO 8859-1) Latin-1을 ASCII로 지칭되기도 한다.
- UCS : Universal Charset Set
110만개 중 첫 65536개만 사용 (이 영역을 BMP, Basic Multilingual Plane라 지칭)
Plane (언어판, 면, 상. 256x256 중 65536개의 코드 묶음) - 유니코드에서는 현재 17개의 언어판 사용
- UCS-2 : 유니코드를 2바이트로 변환 (UCS16) Unicode
ISO 10646에 정의
0x0000~0xFFFD 까지 사용 이를 BMP (Basic Multilingual Plane)라고 부름
U+0000 ~ U+007F : ASCII영역 (ISO 646 IRV)
U+0000 ~ U+00FF : Latin-1 (ISO 8859-1)
U+E000 ~ U+F8FF 와 BMP 외부 영역은 Reserve됨
- UCS-4 : 유니코드를 4바이트로 변환 (UCS32)
ISO 10646에 정의
UCS는 약 20억개의 문자 코드 포인트 보유한다.
모든 문자가 가상의 테이블 안에 포함한다.
테이블들은 128개의 그룹으로 나뉜다.
한 그룹은 256개의 판(Plane)으로 나뉜다.
한 판(Plane)에는 65535개의 코드 포인트가 있다.
문자를 65535(256*256)개 모아 판(Plane)이 된다.
256개의 판(Plane)을 모으면 그룹이라 부른다.
그룹을 128개 모으면 UCS 테이블이 된다.
65535 * 256 * 128 = 약 20억
여기서 최초 65535개의 코드 포인트가 할당되는 부분을 기본 언어판(BMP, Basic Multilingual Plane)이라고 부른다.
Unicode는 UCS의 Subset이며 호환된다.
Unicode는 UCS중에 그룹 0번의 0번 면부터 16번 면까지만 사용한다.
Unicode 인코딩: Unicode에 매겨진 코드 포인트가 바이트로 어떻게 표현할 것인지를 나타낸다.
UTF-32는 코드포인트 값을 그대로 유지하면서 바이트로 표현한다.
UTF-16은 코드포인트 값을 유지하되, BMP를 벗어난 문자는 32비트로 인코딩한다.
UTF-8은 코드포인트 값에 따라 1,2,3,4 바이트로 가변 인코딩한다.
코드 포인트 |
비트 |
UTF-16BE |
UTF-8 |
000000-00007F |
7 |
00000000 0xxxxxxx |
0xxxxxxx |
000080-0007FF |
11 |
00000xxx xxxxxxxx |
110xxxxx 10xxxxxx |
000800-00FFFF |
16 |
xxxxxxxx xxxxxxxx |
1110xxxx 10xxxxxx 10xxxxxx |
010000-10FFFF |
21 |
110110yy yyxxxxxx 110111xx xxxxxxxx |
11110zzz 10zzxxxx 10xxxxxx 10xxxxxx |
- ASCII와 동일한 범위
- 첫 바이트는 110으로 시작하고, 나머지 바이트들은 10으로 시작함.
- 첫 바이트는 1110으로 시작하고, 나머지 바이트들은 10으로 시작함.
- UTF-16 서러게이트 쌍 영역 (yyyy = zzzzz - 1). UTF-8로 표시된 비트 패턴은 실제 코드 포인트와 동일함.