1) UNICODE란?

유니코드란 숫자와 글자, 그 값이 1:1로 매핑되는 형태의 코드입니다.

가령, 아스키코드의 0x41이 A로 매핑된 것 처럼, 아스키코드로 표현될 수 없는 문자들을

대상으로 하여, 유니코드라는 이름으로 전 세계의 모든 문자를 매핑한 것입니다.

즉 다시 말하여 유니코드는 국제/다언어 문자 인코딩 시스템입니다.

 

그렇다면 왜 이런 언어가 필요하였을까요?

초창기의 문자 코드는 ASCII 코드였고, 아스키코드는 로마자 위주의 코드였습니다.

아스키코드의 용량은 1byte였는데, 각 나라별로 자신들의 문자를 삽입한 이후,

(1byte = 8bit = 2^8 = 256, 다만 아스키 코드는 7비트만 사용(128개 값) for Parity Bit)

다른 나라에 전송하였을 때 모든 글자가 깨져버리게 된 것입니다.

다른 나라의 언어를 표현하기에 7비트로 부족하였음을 인식, 8비트로 확장한 코드가 ANSI 코드입니다.

그 가짓수가 2배 증가하여 256개가 되었음에도 불구하고, 비유럽국가등에서는 여전히 제한적이었습니다.

당시, 우리나라는 KSC5601이라는 표준으로 고유한 인코딩 방법으로 문자를 표현하였었죠.

한글의 경우 자음과 모음의 조합 가능 개수만 따져도 가뿐히 128개쯤은 넘기 때문입니다.

중국은 상용한자 수만 따져도 상용자 2500자와 차상용자 1000자를 합쳐서 3500자나 됩니다.

결국 국제 표준 코드의 필요성이 대두되었고 유니코드(UNICODE)가 등장하게 되었습니다.

 

유니코드는 이를 위하여 용량을 크게 확장하여 2byte(16bit = 2^16 = 65536)의 용량을 가지게 됩니다.

유니코드 3.0 버전까지는 2바이트 영역을 가리켜 '기본다중언어판'이라고 불렀습니다.

2바이트의 영역에 기본 문자를 다 표현하는 데에는 충족하였지만,

현 세대에 들어서 잘 사용하지 않는 고어(古語)와 토속어등의 모든 문자를 담기에는 역부족이었습니다.

이에 유니코드 3.0 버전부터는 보충언어판을 정의하였습니다.

기본다중언어판의 영역 중 일부를 상위대행(1024자)와 하위대행(1024자)로 정의한 이후,

이 두 대행의 조합으로 1,048,576(1024*1024)개의 문자를 추가로 정의할 수 있게 되었습니다.

유니코드의 차트를 확인해보면 유니코드로 이모티콘도 지원해주게 되었습니다.

 

2) UTF-8

우리는 이제 전 세계의 언어를 표현하기 위한 인코딩 시스템으로 유니코드가 사용되고 있음을 알았고,

이 코드가 표현할 수 있는 영역이 매우 방대하다는 것 역시 알았습니다.

그리고 UTF-8은 유니코드의 데이터를 전송하기 위한 하나의 규격입니다.

즉, 유니코드를 위한 가변 길이 문자 인코딩 방식 중 하나입니다.

(UTF-8 이외에도 UTF-7, CESU-8, UTF-16 등 많은 방식이 존재합니다.)

여기서 가변 길이 문자 인코딩 방식이라 함은,

다른 언어의 문자를 표현할 때, 다른 바이트 수로 표현될 수 있음을 말합니다.

조금 더 원론적으로 이야기하면 문자 집합을 인코딩하기 위해 가변 길이 코드를 사용하는 유형을 일컫습니다.

그 예시를 살펴보면 ANSI 문자와 영어는 1바이트로, 아시아계 문자는 3바이트로 표현합니다.

 

UTF-8은 문자를 인코딩 할 때 최소 8bit가 필요하기에, 붙여진 이름입니다.

그리고 최소 16bit가 필요한 UTF-16의 인코딩 방식도 존재합니다.

이 두 방식 중 어느 인코딩이 더 적은 바이트를 사용하는지는 사용되는 문자열에 따라 상이해집니다.

물론, 현재의 흐름은 UTF-8입니다.

대부분의 웹에서 언어 인코딩 방식이 UTF-8로 이루어지고 있습니다.

국내에서는 오래전부터 2byte로 한글을 표현할 수 있도록 설계된 EUC-KR을 사용하기도 합니다.

마이크로소프트에서는 이보다 더 확장된 CP949의 인코딩방식 역시 사용하고 있습니다.

비록 UTF-8이 동양권 언어를 표현하는 것에, 비효율적인 방식이긴 하나

국제 규범을 따르는 것에서 얻을 수 있는 경쟁력과 고민을 해 볼 문제인 것 같습니다.

만약 통일이 된다면 인터넷의 속성에서 'URL 경로를 항상 UTF-8로 보내기'옵션은 사라지겠네요?

그럼, 이만 글을 줄이겠습니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기