본문 바로가기

IT Data/사용설명서

[ 인코딩 ] UCS2, UTF-8 유니코드

UTF의 개념
UTF는 16bit 유니코드 문자들을 7비트 또는 8비트 문자로 변환하기 위한 방법이다. 
UTF-8은 유니코드를 8비트 문자로 변경하는 것입니다. 
유니코드란 - 각각의 다른 나라를 시스템의 호환성 및 확장성에 문제를 일으키는 관계로 
이를 하나의 문자인 유니코드로 통합시켜 표현하는 방법중에 한가지입니다. 


UTF-8의 동작 방법
DNS를 찾을 경우 클라이언트에서 utf-8로 인코딩 되어 서버의 ip주소를 찾아 갑니다. 
그러나 특정한 사이트인 경우 utf-8을 지원하지 못할 수 도 있고 서버에 접속을 못할 수 도 있습니다. 

유니코드 용어의 이해 

유니코드 관련 문서를 읽다보면 가장 많이 마주치는 용어들이 
UCS2, UCS4, UTF8, UTF16, UTF32 등과 같은 단어들입니다. 

기본언어판, BMP (Basic Mulitilingual Plane)
유니코드의 첫 65,536개의 코드를 의미합니다. 

언어판, Plane (256x256 즉 65,536 개씩의 코드 묶음) 
유니코드에서는 현재 17개의 언어판을 사용할 수 있습니다. 
모두 그룹 00에 포함됩니다. 

언어판 그룹, Group (256개씩의 언어판을 묶어 하나의 그룹)
유니코드의 17개 언어판은 모두 Group 00에 있습니다. 
유니코드는 17개의 언어판에 한정되어 정의됩니다. 
반면 ISO 표준(UCS-4)에서는 모두 128개의 언어판 그룹이 정의될 수 있습니다. 
 1 Plane = 65,536 code points 
 1 Group = 256 planes = 256x65,536 = 16,777,216 code points 
 UCS-4 = 128 groups = 128x16,777,216 = 2,147,483,648 code points 

인코딩, Encoding (문자집합을 표현하는 방식)
유니코드는 코드체계 또는 문자집합을 명명하는 것이며 이를 표현하기 위해서는 
UTF-8, UTF-16, UTF-32 등과 같은 인코딩이 필요합니다. 

UCS-2: Universal Character Set 2(octets)
좀더 정확하게는 Universal Multipe-Octet Coded Character Set 2입니다. 
ISO/IEC 10646의 용어로 BMP의 65,536 코드를 정의하며, 2바이트로 표현됩니다. 
1개의 언어판, 즉 BMP만이 이에 해당합니다. 
UCS-2는 인코딩 방법이 아니며 문자코드 자체입니다. 
인코딩으로 봐도 무방하겠군요. 여기서 octet이라는 용어를 사용했는데 이 용어는 
ISO쪽에서 사용하는 용어로, 유니코드 진영에서 사용하는 바이트와 같은 뜻입니다 

UCS-4: Universal Character Set 4(octets) 
ISO/IEC 10646의 용어로 4바이트로 표현됩니다. 
모두 128개의 언어판 그룹, 즉 128*256 언어판 = 32,768 언어판을 정의합니다. 
이는 대략 231 = 2,147,483,648개의 코드에 해당합니다. 
UCS-4는 인코딩 방법이 아니며 문자코드 자체입니다. 

UTF-8: UCS Transformation Format, 8-bit form 
Unicode 표준의 인코딩 방식중의 하나입니다. 
표준에서는 17개 언어판의 문자만을 표현할 수 있으나 기술적으로는 
UCS-4 전영역의 문자를 표현할 수 있습니다. 
문자에 따라 1 ~ 4(또는 6) 바이트로 표현됩니다. 

UTF-16: UCS Transformation Format, 16-bit form 
유니코드 3.0에서는 16을 16비트로 해석한 것이 아니라, 
그룹 00의 16개 언어판이라고 써 놓았군요. 
UTF-32의 32가 32비트를 지칭하므로 통일성을 위해 16비트로 이해하시는 게 좋습니다. 
16비트로 표현한다는 점에서는 UCS-2와 흡사하지만 대행문자영역(Surrogates)을 
이용하여 16개의 보충 언어판 코드를 표현할 수 있는 인코딩입니다. 
대행문자영역 2개로 16개의 보충 언어판을 표현할 수 있습니다. 
UCS-2에서는 65536개의 코드만을 정의할 수 있으나 UTF-16에서는
1백만여자를 더 표현할 수 있습니다.
 
UTF-32: UCS Transformation Format, 32-bit form 
32비트 즉 4바이트로 각 문자를 표현합니다. 
이점에서 UCS-4와 동일하지만 17개의 언어판만을 정의한다는 점에서는 
UCS-4의 부분집합으로 간주하면 됩니다. UCS-4와 동일하나  

0x00000000 ~ 0x0010FFFF 범위만을 문자코드로 간주한다고 이해하시면 됩니다.