이하의 글은 2010년에 쓴 것입니다. 오래된 글인 만큼, 현재의 생각과 전혀 다른 내용도 많이 포함되어 있고, 당시와는 상황이 많이 달라진 점도 있습니다. 또한, 그 당시에 잘못 알려졌던 정보도 포함되어 있을 수 있습니다. 어찌됐든 저는 제 오래된 글이 회자되는 것을 저어합니다. 읽기에 앞서 양해를 부탁드립니다.
Unicode 이해의 다양한 단계들
아래는 내가 경험한 여러 유형들을 정리해본 것.
- 최종 사용자.
ㅅㅂ 한글 깨지네.
- Unicode에 대해 전혀 모르는 개발자. 습관적으로
charset=euc-kr
이나charset=cp949
따위의 기존 레거시 코드를 템플릿 삼아 복사함. - UTF-8을 쓰니 Unicode 완비되었다고 생각하는 사람.
- 세상에는 여러 종류의 인코딩이 존재하고 있다는 것을 아는 사람. iconv도 사용할 줄 안다.
- 특정 문자셋을 사용하는 문자(열)을 바이트열로 인코딩하는 방식이 인코딩이며, UTF-8이 곧 Unicode가 아니라는 것을 아는 사람. Python에서
unicode
타입과str
타입이 왜 함께 있는지 이해하며 잘 사용한다. 혹은 C/C++에서wchar_t[]
/std::wstring
으로 Unicode 문자열을 담아 사용하고 입출력 시에 그것을 인코드해서char[]
/std::string
으로 변환해서 쓸 줄 안다. (또한wchar_t
가 곧 Unicode 문자를 뜻하는 것은 아니라는 것도 이해하고 있다.) - Unicode에 여러 평면(plane)이나 카테고리(category), 스크립트(script) 등의 분류가 존재한다는 것을 알고 있다. UCD의 존재를 알고 있다.
- Unicode 전문가. 각종 Unicode 정규화 형식에 대해 잘 알고 있고, 자주 사용하는 몇몇 스크립트들의 바운더리 코드 포인트를 외우고 있으며, Unicode 버전 몇에 어떤 스크립트가 추가되었다든가(예를 들면 5.0 때 파스파 스크립트가 추가됨) 하는 잡다한 것들을 모조리 알고 있다.
나는 6 정도이지만, 실제로 회사를 다니면서 느낀 바로는 2, 3, 4에 해당하는 사람이 대부분이었던 것 같다. IRC에서 같이 노는 사람들은 대체로 나와 비슷한 5–6 수준. 7에 해당하는 사람은 거의 본 적이 없다(강성훈 씨 같은 경우 빼면…).
*UCD: Unicode Character Database