다음 이전 차례

11. 유니코드와 UTF-8을 위한 C의 지원

GNU glibc 2.2부터 살펴보면, 현재 사용하는 로케일과 상관없이, wchar_t 형은 공식적으로 오직 32비트 ISO 10646 값으로 사용되는 경향이 있다. ISO C99에서 필요로 하기 때문에 __STDC_ISO_10646__ 매크로 정의에 의해서 애플리케이션에 이것을 시그널로 보낸다. ISO C 멀티-바이트 변환 함수들(wprintf(), mbstowcs() 등)은 glibc 2.2 혹은 그 이상에서 완벽하게 구현되며, UTF-8 과정을 포함하면서 wchar_t와 로케일 독립적인 멀티바이트 인코딩 사 이에서 변환하기 위해서 사용할 수 있다.

예를 들면 아래와 같이 쓸 수 있다.

wprintf(L"Schone Gruße!\n");

그런 뒤에 소프트웨어는 이러한 텍스트를 사용자가 환경 변수 LC_CTY PE(예를 들면, en_US.UTF-8 혹은 de_DE.ISO_885 9-1)으로 선택한 로케일에 명시된 인코딩상에 출력할 것이다. 컴파 일러는 C 소스 파일에서 사용하는 인코딩에 적합한 로케일에서 동작해야만 한다. 그리고 나면 위의 문자열은 유니코드 wchar_t 문자열에 의해서 오브 젝트 파일에 정확하게 저장될 것이다. 출력시에는 런-타임 라이브러리가 wc har_t 문자열을 프로그램이 실행되는 환경의 로케일에 꼭 맞는 인코딩으로 다시 변환시킬 것이다.


다음 이전 차례