요즘(2007년 현재) 유저 레벨의 유니코드 문서들은 상당수가 UTF-8 이다.
한편 UCS-2 인코딩도 은근히 많이 쓰이고 있는데,
다른 특징도 많이 있지만, 이 두가지만 비교해 보려고 한다.
==== UTF-8 ====
1. 가변길이
- 1~6byte의 가변길이. 영어는 대개 1byte, 한중일 언어는 대부분 3byte
2. ASCII와의 호환성
- ASCII로 작성된 모든 문서는 별도의 변환 없이 UTF-8로 변환 가능.
- UTF-8로 작성된 모든 영문 문서도 ASCII 리더로도 별도의 변환없이 읽을 수 있음.
- 따라서 영어권 국가에서 매우 대중적으로 사용.
3. 1바이트 단위의 패턴 매칭에 적합하다. 글자의 시작 바이트와 따라오는 바이트가 명확히 구분된다.
4. C언어에서 char * 를 사용해야 한다. 문자열길이와 관련된 함수들은 유니코드용 함수들을 써야 한다.
5. 유저 레벨의 유니코드 문서, 특히 웹과 리눅스를 중심으로 매우 광범위하게 사용되고 있다.
==== UCS-2 ====
1. 고정길이
- 무조건 글자당 2byte. 프로그래밍 하기에 편하다. 특히 언어처리 등에서 쓰기 편하다.
2. 주로 MS 관련되어 많이 쓰인다. (WinAPI에서 char *를 받아도 내부적으로 UCS-2로 변환하여 사용한다고 한다)
3. char * 을 사용할때 널문자 문제가 생긴다. (wchar_t등을 사용해야 함. 참고로 gcc에서 wchar_t는 UCS-4 포맷이니 주의)
4. 1바이트 단위의 패턴 매칭에 어려움이 많다.