문자 저장 방식 UTF8, UTF16 에 대한 기본적 이해 | ETC

알파벳은 26자이다.
미국에서 쓰이는 일반적인 문자는 256자가 넘지 않을 것이다.

그래서 `아스키코드`라는 것이 있었다.
1 byte는 2자리 16진수를 표현할 수 있다.
0부터 FF까지.

그런데 알파벳이 아닌 문자르 표현하는 데 한계를 느끼게 된다.
1문자에 1byte라는 것은, 256 문자밖에는 표현할 수 없다는 것이니까.

UTF-16 BE.
이제 넉넉하게 한 문자에 2byte를 부여한다.
모든 문자에 2byte씩 부여한 것이 UTF-16 Big Endian이다.
0부터 FFFF까지.
65536 문자를 나타낼 수 있다.
내가 아는한 모든 문자는 이 안에서 표현이 가능하다.
어디까지나 내가 아는한.
알파벳, 한어, 일어. 물론 간체까지 표현할 수 있다.

UTF-8.
영어권 사용자들에게 UTF-16BE는 비효율적이다.
실제 사용하는 2byte 문자는 거의 없는데,
모든 문자가 2byte로 기록되는 것이다.

그래서 생각한다.
우리가 자주 쓰는 문자는 1byte로 나타내고,
자주 쓰지 않는 문자는 2byte로 표현하되 구분기호를 사용하자.
그래서 `다른 문자`들은 3byte가 되었다.

예를들어, 알파벳 a를 0041로 표현하다가 41로 표현하는 것이다.
그럼 다른 문자는 어떻게 되었을까.
2byte 데이터 앞에 EB라는 구분 기호를 붙인다.
(맞나.. 맞을 것 같지만 EB가 아닐 수도 있음을 염두에 두길.)
그렇게 3 byte 문자가 되는 것이다.

Ansi.
예전에 많이 쓰이던 코드이다.
이건 잘 모르겠다.
중요한건, 많은 문자를 표현하지 못한다는 사실.
중국어 간체 때문에 여러 문자 저장 방식을 알아보게 되었는데,
안시 코드는 간체를 표현하지 못한다.
요즘에도 많이 쓰이긴 하지만.. 비영어권인 우리들은 UTF 방식이 좋겠지.


기타.
1. 완성형
한글 표현 방식으로 1:1 대응 방식이다.
예를들어 `완`이란 문자가 DDDD 라면 `왇`이란 문자가 DDDE 랄까.

2. 조합형
오래전 방식으로 초성, 중성, 종성의 데이터를 각각 저장해서 표현하는 방식이다.

3. UTF-16 Small Endian.
어떤 방식인지 모르겠다.

,