유니코드 지원
유니코드는 단일 바이트에서 나타낼 수 없는 문자를 포함하여 모든 문자 집합을 지원하기 위한 사양입니다. 국제 시장을 프로그래밍하는 경우 유니코드 또는 MBCS(멀티바이트 문자 집합 )를 사용하는 것이 좋습니다. 또는 스위치를 변경하여 빌드할 수 있도록 프로그램을 코딩합니다.
와이드 문자는 2바이트 다국어 문자 코드입니다. 기술 기호 및 특수 게시 문자를 포함하여 전 세계 최신 컴퓨팅에서 사용되는 거의 모든 문자로 구성된 수만 개의 문자를 UTF-16을 사용하여 인코딩된 단일 와이드 문자로 유니코드 사양에 따라 나타낼 수 있습니다. 하나의 와이드 문자로만 나타낼 수 없는 문자는 유니코드 서로게이트 쌍 기능을 사용하여 유니코드 쌍으로 나타낼 수 있습니다. 일반적으로 사용되는 거의 모든 문자는 단일 16비트 와이드 문자로 UTF-16으로 표현되므로 와이드 문자를 사용하면 국제 문자 집합으로 프로그래밍이 간소화됩니다. UTF-16LE(little-endian의 경우)을 사용하여 인코딩된 와이드 문자는 Windows의 네이티브 문자 형식입니다.
와이드 문자열은 wchar_t[]
배열로 표현되며 wchar_t*
포인터가 가리킵니다. 모든 ASCII 문자는 문자 앞에 접두사로 문자 L을 붙여 와이드 문자로 표현할 수 있습니다. 예를 들어 L'\0'은 종료 와이드(16비트) NULL 문자입니다. 마찬가지로, ASCII 문자열 리터럴은 ASCII 리터럴에 접두사로 문자 L을 붙여(예: L"Hello") 와이드 문자열 리터럴로 표현할 수 있습니다.
일반적으로 와이드 문자는 멀티바이트 문자보다 더 많은 메모리 공간을 차지하지만 프로세스 속도는 더 빠릅니다. 또한 멀티바이트 인코딩에서 한 번에 하나의 로캘만 나타낼 수 있는 반면, 전 세계의 모든 문자 집합은 유니코드 표현으로 동시에 표현됩니다.
MFC 프레임워크 전체에서는 유니코드를 사용할 수 있으며 MFC에서는 다음 테이블에 표시된 것처럼 이식 가능한 매크로를 사용하여 유니코드를 사용할 수 있습니다.
MFC의 이식 가능한 데이터 형식
이식 불가능한 데이터 형식 | 다음 매크로로 바뀜 |
---|---|
char , wchar_t |
_TCHAR |
char* , LPSTR (Win32 데이터 형식), LPWSTR |
LPTSTR |
const char* , LPCSTR (Win32 데이터 형식), LPCWSTR |
LPCTSTR |
클래스 CString
는 기본으로 사용 _TCHAR
되며 쉽게 변환할 수 있는 생성자와 연산자를 제공합니다. 유니코드에 대한 대부분의 문자열 작업은 Windows ANSI 문자 집합을 처리하는 데 사용되는 것과 동일한 논리를 사용하여 작성할 수 있습니다. 이러한 논리는 작업의 기본 단위가 8비트 바이트 대신 16비트 문자라는 점이 다릅니다. 멀티바이트 문자 집합을 사용하는 것과 달리 유니코드 문자를 별도의 2바이트인 것처럼 처리할 필요가 없습니다. 그러나 서로게이트 와이드 문자 쌍으로 표현되는 단일 문자의 가능성을 처리해야 합니다. 일반적으로 문자열의 길이가 포함된 문자 수(좁은 문자 또는 너비)와 동일하다고 가정하는 코드를 작성하지 마세요.