UCS와 UTF 계열의 특징 및 차이 요약
- UCS는 character set임. 즉 UCS2, UCS4에 맞는 글자 set들이 있다(2byte, 4byte). 대부분의 현대어(Basic M Plane)들은 UCS2 로 cover됨. 아주 특수한 애들(즉, BMP를 벗어나는)만 UCS4로 처리
- UTF는 encoding 방식. 즉 UCS방식과 무관함. 그러므로 UCS2, UCS4를 UTF8로도, UTF16으로도 UTF32로도 encoding 할 수 있음. 단, UCS2은 UTF16과 둘다 2 byte이므로 거의 유사할 수 밖에 없음. 즉 특별한 encoding이 필요없음. 그래서 많은 프로그램에서 UCS2와 UTF16을 혼용, 혼동함.
- UTF8의 result는 가변길이임(1Byte ~ 4Byte). 첫 바이트의 상위 비트들이 그 문자를 표시하는 데 필요한 바이트 수를 결정한다. 예를 들어서 2바이트는 110으로 시작하고, 3바이트는 1110으로 시작한다. 4byte는 BMP를 벗어난다. UTF8 인코딩은 http://kldp.org/~bangjy/hangul/ 에서 살펴보실 수 있으며 영어 데이타는 1byte, latin어는 두바이트, 그외 UCS2에 포함되는 문자는 세바이트를 사용합니다. UTF16 인코딩은 2바이트 또는 4바이트로 구성.
특징
* data만을 보고 type을 알아내는 것은 거의 불가능. notepad등의 편집기등에서는 읽어서 추측하는 것임. 원칙적으로는 type을 같이 줘야함.
* UTF8은 string terminator가 '\0'이라서 ASCII 비슷하며 호환성을 가짐. UTF16, UTF32는 string terminator가 그렇지 않음. UCS2, UCS4도 null terminating이 되지 않아 단지 이 이유때문에 encoding을 함. (실제로 업계에서 많이 이러고 있음).
- 완성형 저장하기 : 완성->UCS2->UTF8
* 왜 그냥 UTF8을 사용하지 UTF16이나 UTF32를 쓰나?
- UTF16이나 UTF32가 UTF8보다 더 길이가 짧은 경우도 있음 (한글)
* 왜 ascii를 안쓰고 UTF를 사용하나?
- Application이 언어set에 independent해질 수 있도록.
|
Friday, October 4, 2013
UCS2, UCS4, UTF8, UTF16, UTF32
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment