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

(2018-11-03)

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. 유니코드 특징

  ㅇ 다국어 환경에 유리 (지금껏 나온 코드 중 가장 큰 문자 집합의 하나로 인정 받음)
     - 유니코드는 문자 각각에 부여되는 데이터값을 모두 16비트(2 바이트)로 통일하여,
     - 모든 문자 간의 호환성을 제고하여, 컴퓨터에 의한 데이터의 저장 및 교환을 가능하게 함
     - 하나의 문서 내에 여러 나라 언어를 혼합 작성하는 것이 가능하게 됨

     * [참고] ☞ 유니코드 홈페이지 

  ㅇ 유니코드 문자집합에서, 각 문자의 위치를 `코드 포인트(Code Point)`라고 하여,
     - 숫자 값이 할당되며, U+8A9E 처럼 앞에 U+를 붙이고 뒤에 16진수 값으로 표현됨

  ㅇ 유니코드는 문자집합 범위를, Plane 0 ~ 16 으로 구분하고,
     - 특히, Plane 0 인 Basic Multilingual Plane(기본 다국어 평면) 은, 
        . 전세계 언어 문자 대부분이 이에 속하고 (U+0000 ~ U+FFFF),
        . 이 영역은 16 비트 그대로 인코딩 되어있음
        . 이외 영역은 달리 인코딩될 수 있음

     - 한편, 한글의 경우, 
        . 전체 65,536 자의 17.04%(11,172 자)가,
        . Ox AC00(`가`) ~ D7A3(`힣`) 영역에 가나다 순으로 할당되어있음


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 : UCS-2의 확장, 4 바이트로 표현 (1,114,112 문자로 인코딩)
     - 유니코드로 표현할 수 있는 범위를 넘어서는 것도 표현 가능
        . 특수 한자,이모티콘 등
     - (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개)

  ㅇ UCS-4  : 모든 문자를 4 바이트로 표현

  ㅇ ACE(ASCII Compatible Encoding) 등


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

 
        최근수정     요약목록(시험중)     참고문헌