본문 바로가기
개발 용어 정리

[개발용어] Unicode(유니코드), UTF-8, UTF-16, Surrogate(서로게이트) 쌍

by minhyeok.lee 2023. 2. 17.
반응형

Unicode(유니코드), UTF-8, UTF-16, Surrogate(서로게이트, 써로게이트) 쌍이란?

 

유니코드 (ISO-10646)

1. 흔히 Unicode라고 불리는 문자세트와 그 부호화에 대해서 정의하고 있는 표준이다.

2. 유니코드는 전 세계 문자 인코딩 표준이다. 시스템은 문자 및 문자열 조작에만 유니코드를 사용합니다.

3. 유니코드는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다.

4. 유니코드는 유니코드 협회가 제정한다. 또한 이 표준에는 ISO 10646 문자 집합, 문자 인코딩, 문자 정보 데이터베이스, 문자들을 다루기 위한 알고리즘 등을 포함하고 있다.

5. 코드 포인트에 의해 각 문자의 위치가 표시되어 숫자 값이 할당되며 앞에 U+를 붙이고 뒤에 16진수 값으로 표현한다.

 

UTF-8

1. UTF-8은 유니코드를 위한 가변 길이 문자 인코딩 방식중의 하나이다.

2. 한 문자를 나타내기 위해 1~4바이트를 가변적으로 사용한다.

3. (U+0000 ~ U+FFFF): 기본다국어평면(BMP, Basic Multilingual Plane)에 속하는 문자들

 - ASCII (영문, 공백문자, 기호 등), 1바이트 (128문자로 인코딩) (U+0000 ~ U+007F)

 - 로마 / 그리스 / 아랍문자, 2바이트 (1,920 문자로 인코딩)

 - 중국 / 일본 / 한국 등 아시아계 3바이트

4. UTF-8은 유닉스, HTML, 웹페이지 등에서 주로 사용된다.

 

UTF-16

1. UTF-16은 유니코드 문자 인코딩 방식의 하나이다. 4 바이트로 표현된다. (1,114,112 문자로 인코딩)

2. 주로 사용되는 기본 다국어 평면 에 속하는 문자들은 그대로 16비트 값으로 인코딩이 되고 그 이상의 문자는 특별히 정해진 방식으로 32비트로 인코딩이 된다.

3. 유니코드로 정해진 표현 범위를 넘어서는 것도 표현 가능하다. (특수 한자,이모티콘 등)

4. UTF-16은 MS(MicroSoft)사 윈도우 계열, 자바 언어, 자바스크립트 언어 등에서 사용한다.

5. (U+0000 ~ U+FFFF): 기본다국어평면(BMP, Basic multilingual plane)에 속하는 문자들이다.
 - 이 범위에 속하는 문자들 만 그대로 16 비트(2 바이트) 값으로 인코딩이 된다.
 - 그 이상의 문자는 아래와 같이 특별히 정해진 방식으로 32 비트(4 바이트)로 인코딩된다.

6. (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 : 하위 서로게이트)

 

서로게이트쌍

1. 서로게이트쌍은 보조문자를 표현할 때 사용한다.

2. 보조 문자는 BMP를 벗어나는 문자이고 "서로게이트"는 UTF-16 코드 값이다. (U+10000 이상)

3. UTF-16의 경우 단일 보조 문자를 나타내려면 "서로게이트 쌍"이 필요하다.

4. 첫 번째(높음) 서로게이트는 U+D800~U+DBFF 범위의 16비트 코드 값이다.

5. 두 번째(낮은) 서로게이트는 U+DC00에서 U+DFFF 범위의 16비트 코드 값이다.

6. 서로게이트 메커니즘을 사용하여 UTF-16은 1,114,112개의 잠재적 유니코드 문자를 모두 지원할 수 있다.

반응형

댓글