Db2 11.1

유니코드 문자 인코딩

유니코드 문자 인코딩 표준은 사용 중인 거의 모든 세계 언어의 문자를 포함하는 고정 길이의 문자 인코딩 체계입니다.

유니코드에 대한 정보는 유니코드 표준 최신 개정판과 유니코드 컨소시엄 웹 사이트(www.unicode.org)에 있습니다.

유니코드는 인코딩되는 데이터의 데이터 유형에 따라 두 개의 인코딩 양식(8비트 및 16비트)을 사용합니다. 기본 인코딩 양식은 16비트로, 각 문자는 16비트(2바이트)이며 보통 U+hhhh로 표시됩니다(여기서, hhhh는 문자의 16진 코드 포인트입니다. 65,000개 이상의 코드 요소 결과로도 세계 주요 언어의 문자 대부분을 인코딩할 수 있을 정도로 충분하지만 유니코드 표준은 무려 백만 개가 넘는 문자를 인코딩할 수 있는 확장 메커니즘도 제공합니다. 확장 메커니즘은 한 쌍의 상/하위 대리 문자를 사용하여 하나의 확장 또는 보조 문자를 인코딩합니다. 첫 번째(또는 상위) 대리 문자는 U+D800에서 U+DBFF 사이의 코드 값을 가지며, 두 번째(또는 하위) 대리 문자는 U+DC00에서 U+DFFF 사이의 코드 값을 갖습니다.

UCS-2

국제 표준화 기구(ISO) 및 국제 전기기술 위원회(IEC) 표준 10646(ISO/IEC 10646)은 16비트(2바이트) 버전(UCS-2)과 32비트(4바이트) 버전(UCS-4)이 있는 UCS(Universal Multiple-Octet Coded Character Set)를 지정합니다. UCS-2는 대리가 없는 유니코드 16비트 양식과 동일합니다. UCS-2는 유니코드 버전 3.0 레퍼토리에 정의된 모든 (16비트) 문자를 인코딩할 수 있습니다. 유니코드 버전 3.1부터 도입된 새 보조 문자를 각각 인코딩하려면 두 개의 UCS-2 문자(상위 대리 다음에 하위 대리가 옴)가 필요합니다. 이러한 보조 문자는 원래 16비트 BMP(Basic Multilingual Plane 또는 Plane 0) 외부에 정의됩니다.

UTF-16

ISO/IEC 10646은 두 개의 UCS-2 문자를 사용하여 일부 UCS-4 문자를 인코딩하는 확장 기술도 정의합니다. UTF-16이라는 이 확장은 대리가 있는 유니코드 16비트 인코딩 양식과 동일합니다. 요약하면 UTF-16 문자 레퍼토리는 모든 UCS-2 문자에 대리 쌍을 통해 액세스할 수 있는 백만 개의 문자를 더한 것입니다.

16비트 유니코드 문자를 바이트로 직렬화할 때 어떤 프로세서는 최상위 비트를 처음 위치에 배치(빅 엔디안(big-endian) 순서라고 함)하는 반면 다른 프로세서는 최하위 비트를 먼저 배치(리틀 엔디안(little-endian) 순서라고 함)합니다. 유니코드의 기본 바이트 순서는 빅 엔디안(big-endian)입니다.

UTF-8

16비트 유니코드 문자는 바이트 지향 ASCII 기반 애플리케이션과 파일 시스템에 중요한 문제점을 제기합니다. 예를 들어, 비유니코드 인식 애플리케이션은 대문자 'A'(U+0041)의 선행 8개 영(0) 비트를 1바이트 ASCII NULL 문자로 잘못 해석할 수 있습니다.

UTF-8(UCS 변환 형식 8)은 고정 길이 유니코드 문자를 가변 길이 ASCII 안전 바이트 문자열로 변환하는 알고리즘 변환입니다. UTF-8에서 ASCII 및 제어 문자는 보통 1바이트 코드로 표시되지만 다른 문자는 2바이트 이상입니다. UTF-8은 비보조 및 보조 문자를 모두 인코딩할 수 있습니다.

UTF-8 문자는 최대 4바이트입니다. 비보조 문자는 최대 3바이트이며 보조 문자는 4바이트입니다.

표 1에서 UTF-8 형식의 각 UTF-16 문자에 대한 바이트 수를 판별할 수 있습니다.

표 1. UTF-8 비트 분포
코드 값

(2진)

UTF-16

(2진)

첫 번째 바이트

(2진)

두 번째 바이트

(2진)

세 번째 바이트

(2진)

네 번째 바이트

(2진)

00000000

0xxxxxxx

00000000

0xxxxxxx

0xxxxxxx      
00000yyy

yyxxxxxx

00000yyy

yyxxxxxx

110yyyyy 10xxxxxx    
zzzzyyyy

yyxxxxxx

zzzzyyyy

yyxxxxxx

1110zzzz 10yyyyyy 10xxxxxx  
uuuuu

zzzzyyyy

yyxxxxxx

110110ww

wwzzzzyy

110111yy

yyxxxxxx

11110uuu

(여기서 uuuuu = wwww+1)

10uuzzzz 10yyyyyy 10xxxxxx

앞의 표에 나열된 각 코드 값에서 연속된 u, w, x, y, z는 문자의 비트 표시입니다. 예를 들어, U+0080은 2진 형식의 11000010 10000000으로 변환되며, 대리 문자 쌍 U+D800 U+DC00은 2진 형식의 11110000 10010000 10000000이 됩니다.