1. ISO-10646 또는 Unicode
ㅇ 흔히 Unicode라고 불리는 문자세트(문자집합)과 그 부호화에 대해서 정의하고 있는 표준
ㅇ `유니코드 콘소시엄`이 처음 유니코드 표준안을 내놓고, 후에 `ISO/IEC`와 협력함
- ISO/IEC 10646 (국내 KS X 1005-1)
- 유니코드와 ISO/IEC 10646는 문자 목록을 공유하며, 문자 인코딩 방식까지 동일하지만,
. 유니코드 표준안이 더 많은 세부 규정들을 포괄함
2. 유니코드 특징
ㅇ 다국어 환경에 유리 (지금껏 나온 코드 중 가장 큰 문자 집합의 하나로 인정 받음)
- 모든 문자 간의 호환성을 제고하여, 컴퓨터에 의한 데이터의 저장 및 교환을 가능하게 함
- 하나의 문서 내에 여러 나라 언어를 혼합 작성하는 것이 가능하게 됨
* [참고] ☞ 유니코드 홈페이지
ㅇ 유니코드는 문자집합 범위를, Plane 0 ~ 16 으로 구분하고,
- 특히, Plane 0 인 Basic Multilingual Plane(기본 다국어 평면) 은,
. 전세계 언어 문자 대부분이 이에 속하고 (U+0000 ~ U+FFFF),
. 이 영역은 16 비트 그대로 인코딩 되어있음
. 이외 영역은 달리 인코딩될 수 있음
- 한편, 한글의 경우,
. (11,172)개 문자가, Ox AC00(`가`) ~ D7A3(`힣`) 영역에 가나다 순으로 할당되어있음
ㅇ `코드 포인트`에 의해 각 문자의 위치를 표시
- 유니코드 문자집합에서, 각 문자의 위치를 `코드 포인트(Code Point)`라고 하여,
- 숫자 값이 할당되며,
- U+8A9E 처럼 앞에 U+를 붙이고 뒤에 16진수 값으로 표현됨
ㅇ 각 문자 마다 언어 등 차이에 따라 바이트 길이가 달라질 수 있음
3. 유니코드 주요 문자 인코딩 방식들
ㅇ UTF-8 : 유니코드를 위한 가변 길이 문자 인코딩 방식 중의 하나 (가장 보편적으로 사용)
- 한 문자를 나타내기 위해 1 ~ 4 바이트까지를 가변적으로 사용
. 여기서, 가변 길이 이란?
.. 언어 마다 한 글자가 차지하는 길이(바이트)가 다르다는 것임
.. 즉, 언어 마다 다른 바이트 수로 표현될 수 있음
. 한편, 4 바이트 표현 문자는, 기본다국어평면 밖에 있는 문자로써,
.. 드물게 사용되는 문자들 임
.. 예로써, 특수 기호, 그림 이모티콘, 희귀 언어 등
- (U+0000 ~ U+FFFF) : 기본다국어평면(BMP, Basic multilingual plane)에 속하는 문자들
. ASCII (영문,공백문자,기호 등) 1 바이트 (128 문자로 인코딩) (U+0000 ~ U+007F)
. 로마/그리스/아랍문자 2 바이트 (1,920 문자로 인코딩)
. 중국/일본/한국 등 아시아계 3 바이트 (63,488 문자로 인코딩)
- 한편, UTF-8은,
. 유닉스,HTML,웹페이지(웹브라우저) 등에서 주로 쓰임
ㅇ UTF-16 : 4 바이트로 표현 (1,114,112 문자로 인코딩) (UCS-2의 확장)
- 심지어, 유니코드로 정해진 표현 범위를 넘어서는 것도 표현 가능
. 특수 한자,이모티콘 등
- (U+0000 ~ U+FFFF) : 기본다국어평면(BMP, Basic multilingual plane)에 속하는 문자들
. 이 범위에 속하는 문자들 만 그대로 16 비트(2 바이트) 값으로 인코딩이 되고,
. 그 이상의 문자는 아래와 같이 특별히 정해진 방식으로 32 비트(4 바이트)로 인코딩
- (U+10000 ~)
. U+10000 이상은 써로게이트 영역(Surrogate)이라 하여,
.. 인코딩 값(2 바이트) 2개를 합쳐 구성됨
. 즉, 기본 다국어 평면에 포함되지 않는 문자(16 비트로 값을 표현할 수 없는 문자들)은,
.. 써로게이트(Surrogate) 문자 영역에 해당하는 2개의 16 비트 문자로 변환되어,
.. 이 한 쌍(즉, 32비트)이 그 문자를 나타내게 됨
. 써로게이트 페어(Surrogate Pair)에 의한 유니코드의 코드 포인트 값의 계산법
.. u = (a - 0xD800) * 0x400 + (b - 0xDC00) + 0x10000
.. (a : 상위 써로게이트 U+D800 ~ U+DBFF, b : 하위 써로게이트)
- UTF-16은,
. MS社 윈도우 계열,자바 언어,자바스크립트 언어 등에서 사용
ㅇ UCS-2 : 모든 문자를 2 바이트로 표현 (65,535개)
- 고정 2 바이트 인코딩 방식
ㅇ UCS-4 : 모든 문자를 4 바이트로 표현
- 고정 4 바이트 인코딩 방식
ㅇ ACE(ASCII Compatible Encoding) 등