확장 문자

확장 문자(擴張文字)는 일반적으로 전통적인 8비트 문자 보다 크기가 더 큰 컴퓨터 문자의 자료형이다. 와이드 문자, 와이드 캐릭터(wide character)라고도 한다. 확장된 자료형 크기는 더 큰 부호화 문자 집합을 이용할 수 있게 한다.

역사 
1960년대 동안 메인프레임 컴퓨터와 미니컴퓨터 제조업체들은 8비트 바이트 정도를 최소 자료형으로 표준화하기 시작하였다. 그 동안 7비트 아스키 문자가 인쇄 전신기, 컴퓨터 터미널의 영숫자 인코딩에 대한 산업 표준 방식으로 채택되어 있었다. 그 결과 8비트 바이트는 컴퓨터 시스템에서 ASCII 문자를 메모리에 저장하는 사실 상의 자료형이 되어왔다.

나중에 컴퓨터 제조업체들은 제한된 영어 알파벳 문자 집합을 넘어서서 아스키 문자 집합을 확장하기 위한 여분의 비트를 이용하기 시작하였다. IBM 코드 페이지 37, PETSCI, ISO 8859와 같은 8비트 확장이 일반화되어 터미널에 그리스 문자, 키릴 문자 등의 문자 지원을 제공하게 되었다. 그러나 이러한 확장은 특정 지역에 국한된다는 단점이 있었고 동시에 사용할 수 없었다. 문자 집합마다 특수한 변환 루틴을 사용하여 변환해 주어야 했으므로 대상 집합에 존재하는 문자가 없을 때 이따금 변환을 실패하기도 했다.

1989년에 국제 표준화 기구는 범용 문자 집합(UCS)을 만들기 시작하였는데 이 집합은 16비트(2바이트)나 32비트(4바이트) 값을 이용하여 인코딩할 수 있는 다국어 문자 집합을 가리킨다. 이렇게 큰 값은 8비트 보다 더 큰 자료형을 이용하여야 메모리에 새로운 문자 값을 저장할 수 있었다. 그러므로 확장 문자라는 이 용어는 전통적인 8비트 문자 자료형과는 구분된다.

프로그래밍의 예

C / C ++ 
wchar_t myChar1 = L'Ω';
wchar_t myChar2 = 0x2126; // UTF-16을 이용하여 문자 Ω를 16진으로 변환한다.
wchar_t myString1[] = L"♠♣♥♦";
wchar_t myString2[] = { 0x2660, 0x2661, 0x2662, 0x2663, 0x0000 };
// UTF-16을 이용하여 NULL 종단 문자 ♠♣♥♦을 16진으로 변환한다.

printf("문자열 값은 다음과 같다: %ls \n",myString1);
wprintf(L"문자열 값은 다음과 같다: %s \n",myString2);

파이썬 
파이썬 문서에 따르면
이 언어는 wchar_t를 문자형 Py_UNICODE로 이용하기도 한다. 이는 사용 중인 파이썬 유니코드 빌드가 wchar_t와 호환되는지의 여부에 달려 있다.

각주

외부 링크 
 The Unicode Standard, Version 4.0 - online edition

문자 인코딩
C 프로그래밍 언어
C++