본문 바로가기
C++ 200제/코딩 IT 정보

한글 인코딩 UCS와 UTF 계열 특징과 차이 (국제 문자 세트)

by vicddory 2018. 3. 3.

한글 인코딩 UCS와 UTF 계열 특징과 차이 (국제 문자 세트)


UCS와 UTF 계열의 특징 및 차이 요약 (UCS2, UCS4, UTF8, UTF16, UTF32)


UCS

UCS2, UCS4에 맞는 글자 세트들이 있습니다. (2byte, 4byte) 대부분의 현대어(Basic M Plane)들은 UCS2로 cover 됩니다. (한글 인코딩과는 무관) 다만, 아주 특수한 애들(즉, BMP를 벗어나는)만 UCS4로 처리합니다.


UTF

encoding 방식, 즉 UCS방식과 무관합니다. 그러므로 UCS2, UCS4를 UTF8로도, UTF16으로도 UTF32로도 encoding 할 수 있습니다. 단, UCS2은 UTF16과 둘 다 2byte이므로 거의 유사할 수밖에 없습니다. 즉, 특별한 encoding이 필요 없다는 뜻으로 많은 프로그램에서 UCS2와 UTF16을 혼용합니다. (그래서 둘을 혼동합니다) 


UTF 8

UTF8의 result는 가변 길이(1Byte ~ 4Byte)입니다. 첫 바이트의 상위 비트들이 그 문자를 표시하는 데 필요한 바이트 수를 결정합니다. (한글 인코딩과 연관)


예를 들어서 2바이트는 110으로 시작하고, 3바이트는 1110으로 시작합니다. 4byte는 BMP를 벗어납니다. UTF8 인코딩은 http://kldp.org/~bangjy/hangul/ 에서 살펴보실 수 있으며 영어 데이타는 1byte, latin어는 두 바이트, 그 외 UCS2에 포함되는 문자는 세 바이트를 사용합니다. UTF16 인코딩은 2바이트 또는 4바이트로 구성됩니다.


유니코드 UTF-8 표시 표현 Unicode유니코드 UTF-8 표시 표현 Unicode


특징

data만을 보고 type을 알아내는 것은 거의 불가능합니다. notepad 등의 편집기 등에서는 읽어서 추측하는 것입니다. 원칙적으로는 type을 같이 줘야 합니다.

 

UTF8은 string terminator가 '\0'이라서 ASCII 비슷하며 호환성을 가집니다. UTF16, UTF32는 string terminator가 그렇진 않습니다. UCS2, UCS4도 null terminating이 되지 않아 단지 이 이유로 encoding을 합니다. (실제로 업계에서 많이 이러고 있음)


완성형 저장하기 : 완성->UCS2->UTF8


1. 왜 그냥 UTF8을 사용하지 UTF16이나 UTF32를 쓸까요?

UTF16이나 UTF32가 UTF8보다 더 길이가 짧은 경우도 있기 때문입니다. (한글 인코딩)

 

2. 왜 ascii를 안 쓰고 UTF를 사용할까요?

Application이 언어set에 independent 해지기 위해서입니다.


한글 인코딩 UCS와 UTF 계열 특징과 차이 (국제 문자 세트)

댓글