유니코드를 위한 가변 길이 문자 인코딩 방식이다.
- 유니코드 - 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다.

컴퓨터는 문자를 받을 때에 Byte로 받는다.
이때에 인코딩 또는 디코딩을 통해서 컴퓨터에게 문자를 주거나 받거나 할 수 있다.
- 인코딩이란? 사람이 보내고자 하는 데이터를 컴퓨터가 이해 할 수 있는 언어로 바꿔 주는 것이다.
- 디코딩이란? 컴퓨터가 데이터를 줄 때에 사람이 이해 할 수 있는 언어로 바꿔주는 것이다.
대표적인 예시로는
모스부호
가 있다.
우리가 A를 보내게 되면 인코딩을 하여 컴퓨터에게 0110을 전달 해준다. 이때 0110은 우리가 이해 할 수 없는 언어이다.
인코딩과 디코딩을 하기 위해서는 모스부호를 분석하기 위한 표가 필요하다.
모스부호를 해석하는 것은 어려운 것이 아니고, 표를 직접 하나하나 찾아봐야 하기때문에 귀찮은 일이다.
우리는 이럴 때 컴퓨터에게 시키면된다. 이것을 최초로 미국에서 시작을 하였고, 분석을 위한 표의 이름은
아스키 코드표
라고 하였다.
하지만 아스키 코드표
는 미국에서만 사용이 가능하기 때문에 각 나라에서는 해당 나라에 필요한 분석표가 따로 필요하였다. 한국에서는 완성형 문자
를 표로 만들어 이름을 EUC-KR
이라고 하였다.
완성형 문자
에 단점으로는 해당 분석표에 없는 경우에는 표현이 불가능하다. 예시로 뷁 같은 단어가 있다. 이런 단어는 분석표에 없기 때문에 표시를 못하는데, 그러려면 분석표를 업데이트 해야한다. 하지만 이것은 개인이 수정이 불가능하기 때문에 해당 단어를 표시 할 수 없는 단점이 있다.
이제 각 나라에서 통신을 하려고 할 때에 문제가 생긴다. 만약 한국과 미국에서 서로 통신을 하려고 할 때에 한국에서 ‘안녕’이라는 글자를 보낼 때,
완성형 문자
는 한 글자에 2Byte를 잡고 데이터를 보낸다. 그치만 미국에서 사용하는 분석표는 아스키 코드표
로 1Byte를 읽는다. 한글을 1Byte로 끊어 읽게 되면서 미국에서는 한국에서 보낸 글자가 깨져서 화면에 출력이 되는 것이다. 만약 미국과 통신을 하기 위해서는 아스키 코드표
를 받아야지 아스키 코드표
에 맞는 데이터를 보내고, 아스키 코드표
에 맞는 데이터를 받는다.그렇지만 전 세계와 통신을 한다고 생각해보면?
전세계의 분석표를 받아서 통신을 할 때마다 분석표에 맞는 방식으로 데이터를 보내거나 받아야한다.
이런 문제를 해결하기 위해
유니코드(국제 표준 표)
를 만들었다.
유니코드
는 기본적으로 4Byte 문자 체계이다. 미국에서 아스키 코드를 유니코드로 인코딩을 하게 되면 3Byte가 낭비가 된다. 이런 것을 해결하기 위해서 유니코드는 가변 코드로 1~4Byte를 동적으로 표현한다. 
한글을
UTF-8
방식으로 인코딩 할 때에는 완성형 문자가 아닌 조합형 문자를 사용한다.
이 방식은 ㅇ / ㅏ / ㄴ 처럼 자음 / 모음 / 받침을 각각 조합하는 형태이다.
이 방식을 사용하는 이유는 예상치 못한 단어나, 옛한글 같은 경우에 표현이 되지 않을 경우가 있기 때문이다.
조합형 문자를 사용하게 되면 완성형 문자와 섞어써도 데이터 출력이 편하다.
예시로 안녕을 조합형으로 나누어보면 ㅇ / ㅏ / ㄴ / ㄴ / ㅕ / ㅇ 이다.
이러한 경우에는
UTF-8
로 디코딩할 때에 1 byte씩 뽑아서 조합형 문자이다 하면, 3 byte씩 조합하기 때문에 안녕 이라는 글자로 정상 출력이 된다.만약 안녕a 라는 글자가 나오게 되면 a는
아스키코드표
에 완성형 문자이기 때문에 그대로 1byte를 차지하게 되며 안녕a 라는 글자로 정상 출력 된다.지금 모든 세상은
유니코드
를 위해서 UTF-8
설정을 해주어야 내가 보내는 데이터와 받는 데이터가 정상적으로 각 나라에 필요한 문자로 출력된다!
Share article