Unicode, ISO 10646   International Organization for Standardization 10646   유니코드

(2023-06-21)

UTF-8, UTF-16, Code Point, 코드 포인트, Surrogate Pair, 써로게이트 페어


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) 등

자료표현코드
   1. 알파뉴메릭 코드   2. 문자 셋   3. ASCII 코드   4. ISO 8859 (ASCII 확장)   5. KSC5601 (한글완성형코드표준)   6. 유니코드   7. EUC (확장 유닉스 코드)   8. MSB,LSB   9. Big-endian,Little-endian  


Copyrightⓒ written by 차재복 (Cha Jae Bok)               기술용어해설 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"