洪民憙 (홍민희) 블로그

이하의 글은 2010년에 쓴 것입니다. 오래된 글인 만큼, 현재의 생각과 전혀 다른 내용도 많이 포함되어 있고, 당시와는 상황이 많이 달라진 점도 있습니다. 또한, 그 당시에 잘못 알려졌던 정보도 포함되어 있을 수 있습니다. 어찌됐든 저는 제 오래된 글이 회자되는 것을 저어합니다. 읽기에 앞서 양해를 부탁드립니다.

Unicode 이해의 다양한 단계들

아래는 내가 경험한 여러 유형들을 정리해본 것.

  1. 최종 사용자. ㅅㅂ 한글 깨지네.
  2. Unicode에 대해 전혀 모르는 개발자. 습관적으로 charset=euc-kr이나 charset=cp949 따위의 기존 레거시 코드를 템플릿 삼아 복사함.
  3. UTF-8을 쓰니 Unicode 완비되었다고 생각하는 사람.
  4. 세상에는 여러 종류의 인코딩이 존재하고 있다는 것을 아는 사람. iconv도 사용할 줄 안다.
  5. 특정 문자셋을 사용하는 문자(열)을 바이트열로 인코딩하는 방식이 인코딩이며, UTF-8이 곧 Unicode가 아니라는 것을 아는 사람. Python에서 unicode 타입과 str 타입이 왜 함께 있는지 이해하며 잘 사용한다. 혹은 C/C++에서 wchar_t[]/std::wstring으로 Unicode 문자열을 담아 사용하고 입출력 시에 그것을 인코드해서 char[]/std::string으로 변환해서 쓸 줄 안다. (또한 wchar_t가 곧 Unicode 문자를 뜻하는 것은 아니라는 것도 이해하고 있다.)
  6. Unicode에 여러 평면(plane)이나 카테고리(category), 스크립트(script) 등의 분류가 존재한다는 것을 알고 있다. UCD의 존재를 알고 있다.
  7. Unicode 전문가. 각종 Unicode 정규화 형식에 대해 잘 알고 있고, 자주 사용하는 몇몇 스크립트들의 바운더리 코드 포인트를 외우고 있으며, Unicode 버전 몇에 어떤 스크립트가 추가되었다든가(예를 들면 5.0 때 파스파 스크립트가 추가됨) 하는 잡다한 것들을 모조리 알고 있다.

나는 6 정도이지만, 실제로 회사를 다니면서 느낀 바로는 2, 3, 4에 해당하는 사람이 대부분이었던 것 같다. IRC에서 같이 노는 사람들은 대체로 나와 비슷한 5–6 수준. 7에 해당하는 사람은 거의 본 적이 없다(강성훈 씨 같은 경우 빼면…).

*UCD: Unicode Character Database