Unicode

UTF-8을 알기 위해서는 먼저 유니코드를 알아야 한다. 유니코드는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다.

(이것을 규율하는 단체는 유니코드 콘소시엄(Unicode Consortium)이라고 한다.)

전 세계의 모든 문자를 담은 ISO/IEC 10646 코드표를 사용함으로써, 각 언어와 문자 체계에 따른 충돌 문제를 해결하였다. 따라서 유니코드를 사용하면 한글과 신자체, 간체자, 아랍문자 등을 통일된 환경에서 깨지지 않고 사용할 수 있다.

즉, 유니코드는 글자와 코드가 1:1 매핑되어 있는 코드표 이다. → 코드표

UTF-8

유니코드를 통해 코드표가 정의되었다. 남은 것은 그 코드가 컴퓨터에 어떻게 저장되어야 하는 것이다. 다른 말로 인코딩(encoding)이라고 하는데, 컴퓨터가 이해할 수 있는 형태로 바꿔주는 것이다.

즉, UTF-8은 유니코드를 인코딩(encoding) 하는 방식이다. 전세계에서 사용하는 약속이다.

풀 네임은 Unicode Transformation Format - 8 bit, 8의 의미는 8비트 즉, 1바이트를 기준으로 인코딩(encoding)한다는 의미이다.

예를 들어, A라는 사람이 자기만의 암호체계를 만들었는데 ‘가’는 0001(=1)로, ‘나’는 0010(=2)이라고 하자. A가 ‘가나나가’ 라고 말하면 컴퓨터에는 0001 0010 0010 0001 로 저장한다. 글자당 1byte로 할당해 4byte로 저장할 수 있고 00010010 00100001 처럼 2byte로 저장할 수 도 있다.

이건 전적으로 A와 컴퓨터간의 약속이다. A만이 쓸 때는 문제가 없지만 전세계 사람들이 사용하려면 좀 더 잘 만들어야 할 것이다.

UTF-8은 가변 인코딩 방식이다. 쉬운 말로 하면 글자마다 byte길이가 다르다는 것이다. ‘a’ 는 1byte 이고 ‘가’는 3byte이다. 가변을 구분하기 위해 첫 바이트에 표식을 넣었는데 2byte는 110으로 시작하고 3byte는 1110으로 시작한다. 나머지 바이트는 10으로 시작한다. 왜 그러냐고 묻는다면 ‘약속이다.’