사용자:Cppig1995/UTF-16의 필요성

위키백과, 우리 모두의 백과사전.

요즘, 인코딩 변경의 필요성에 대한 이야기가 많이 나오고 있다. 기존의 cp949와 같은 세계적이지 않은 인코딩에서 탈출해 유니코드(Unicode)로 편승하자는 것이다. 물론 필자도 찬성한다. 그러나 유니코드에는 여러 가지 인코딩(encoding) 방법들이 존재한다. 이는 우리의 선택을 더욱 다양하게 한다. 유니코드의 인코딩은 UTF-7, UTF-8, UTF-16, UTF-32, 퓨니코드 등이 존재한다. UTF-7이나 퓨니코드는 전자 우편에서 깨지지 않게 하기 위한 방편 그 이상도 이하도 아닌 존재로 인식되고 있고, UTF-32는 그 어떤 사람도 쓸 엄두를 내지 못할 정도로 비효율적인 용량이다. 우리의 선택은 UTF-8이나 UTF-16 중 하나이다. 최대한 빨리 결단을 내릴수록, 우리에게는 이득이다. 먼저, UTF-8은 아스키 널 문자(NUL)가 문자열 중간에 나오지 않게 인코딩되기 때문에 기존의 프로그램과 호환성을 지니며, 아스키 문자들이 모두 1옥텟으로 인코딩된다는 면에서 매력적이다. 그러나 한중일 문자에 대해서는 기존의 인코딩보다 오히려 1옥텟 늘어난 3옥텟이다. 여기서 옥텟이란 8비트를 지칭하는 용어이다. 일반적으로 쓰는 바이트의 개념과 같다고 보면 된다. 다음 UTF-16은, 아스키 문자와 한글이 모두 2옥텟으로 인코딩된다. 즉, UTF-8에 비해 아스키 문자(영문, 숫자, 기본적인 특수 기호, 각종 공백 등)는 2배, 한글은 3분의 2 용량을 차지하는 것이다. 기본문자판(BMP) 내의 문자들을 아스키와 비(非)아스키로 나누어 보자. 그 뒤 특정한 비율-즉 중간점-에서 아스키가 많아지면 UTF-8이 우세, 비아스키가 많아지면 UTF-16이 우세할 것이다. 그 지점을 찾아보자. 반반인 경우라는 것을 쉽게 알 수 있다. 50:50인 경우, 둘 모두 200옥텟이다. 그러나 우리가 한글/한자/기타 비영어권 외국어와 영문/숫자/공백을 반반씩 쓰는가? 그렇지 않다. 전자가 우세하다. 아래의 글은 UTF-16에서 828옥텟이나, UTF-8에서 968옥텟이다. 한중일 언어권에서는 UTF-16이 더 우세함을 알 수 있다. (아래 글의 출처는 한국어 위키백과의 항목 '유니코드')

유니코드(Unicode)는 전세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다. 유니코드 협회(Unicode Consortium)가 제정하며, 현재 최신판은 유니코드 5.0이다. 이 표준에는 문자 집합, 문자 인코딩, 문자 정보 데이터베이스, 문자들을 다루기 위한 알고리즘 등이 포함된다.

유니코드의 목적은 현존하는 문자 인코딩 방법들을 모두 유니코드로 교체하려는 것이다. 기존의 인코딩들은 그 규모나 범위 면에서 한정되어 있고, 다국어 환경에서는 서로 호환되지 않는 문제점이 있었다. 유니코드가 다양한 문자 집합들을 통합하는 데 성공하면서 유니코드는 컴퓨터 소프트웨어의 국제화와 지역화에 널리 사용되게 되었으며, 비교적 최근의 기술인 XML, 자바, 그리고 최신 운영체제 등에서도 지원하고 있다.