유니코드 및 멀티바이트 문자 집합(MBCS) 지원
일부 언어(예: 일본어 및 중국어)에는 큰 문자 집합이 있습니다. 이러한 시장에 대한 프로그래밍을 지원하기 위해 MFC(Microsoft Foundation Class Library)를 사용하면 큰 문자 집합을 처리하는 두 가지 방법을 사용할 수 있습니다.
UTF-16으로 인코딩된 유니코드,
wchar_t
기반 와이드 문자 및 문자열입니다.MBCS(멀티바이트 문자 집합)
char
는 로캘별 문자 집합으로 인코딩된 단일 또는 더블바이트 문자 및 문자열을 기반으로 합니다.
참고 항목
Microsoft는 모든 새 개발에 MFC 유니코드 라이브러리를 권장합니다.
MBCS 라이브러리는 Visual Studio 2013 및 Visual Studio 2015에서 더 이상 사용되지 않습니다. 더 이상 그렇지 않습니다.
Visual Studio 2017부터 MBCS 라이브러리는 더 이상 사용되지 않으며 사용 중단 경고를 생성하지 않습니다.
유니코드 문자열에 대한 MFC 지원
전체 MFC 클래스 라이브러리는 UTF-16으로 와이드 문자에 저장된 유니코드 문자 및 문자열에 대해 조건부로 사용하도록 설정됩니다. 특히 클래스 CString
는 유니코드를 사용할 수 있습니다.
이러한 라이브러리, 디버거 및 DLL 파일은 MFC에서 유니코드를 지원하는 데 사용됩니다.
MFC버전U.LIB
MFC버전UD. LIB (메일)
MFCM버전U.LIB
MFCM버전UD. LIB (메일)
MFCS버전U.LIB
MFCS버전UD. LIB (메일)
UAFXCW. LIB (메일)
UAFXCWD. LIB (메일)
MFC버전U.PDB
MFC버전UD. PDB
MFCM버전U.PDB
MFCM버전UD. PDB
MFCS버전U.PDB
MFCS버전UD. PDB
UAFXCW. PDB
UAFXCWD. PDB
MFC버전U.DLL
MFC버전UD.DLL
MFCM버전U.DLL
MFCM버전UD.DLL
(버전은 파일의 버전 번호를 나타냅니다. 예를 들어 '140'은 버전 14.0을 의미합니다.)
CString
는 데이터 형식을 TCHAR
기반으로 하며 프로그램 TCHAR
빌드에 대해 기호 _UNICODE
가 정의된 경우 16비트 문자 인코딩 형식인 형식wchar_t
으로 정의됩니다. 그렇지 않으면 TCHAR
일반 8비트 문자 인코딩으로 char
정의됩니다. 따라서 유니코드 아래에는 CString
16비트 문자로 구성됩니다. 유니코드가 없으면 형식 char
의 문자로 구성됩니다.
애플리케이션의 유니코드 프로그래밍을 완료하려면 다음도 수행해야 합니다.
매크로를
_T
사용하여 유니코드로 이식할 리터럴 문자열을 조건부로 코딩합니다.문자열을 전달할 때 함수 인수에 문자 길이 또는 길이(바이트)가 필요한지 주의해야 합니다. 유니코드 문자열을 사용하는 경우 차이점이 중요합니다.
이식 가능한 버전의 C 런타임 문자열 처리 함수를 사용합니다.
문자 및 문자 포인터에 다음 데이터 형식을 사용합니다.
사용할 위치를 사용합니다
TCHAR
char
.사용할 위치를 사용합니다
LPTSTR
char
*.사용할 위치를 사용합니다
LPCTSTR
const char
*.CString
는 변환CString
할 연산LPCTSTR
자를 제공합니다.LPCTSTR
CString
또한 유니코드 인식 생성자, 할당 연산자 및 비교 연산자를 제공합니다.
런타임 라이브러리 참조는 모든 문자열 처리 함수의 이식 가능한 버전을 정의합니다. 자세한 내용은 국제화 범주를 참조하세요.
MBCS 문자열에 대한 MFC 지원
클래스 라이브러리는 멀티바이트 문자 집합에도 사용할 수 있지만 DBCS(더블바이트 문자 집합)에 대해서만 사용할 수 있습니다.
멀티바이트 문자 집합에서 문자 너비는 1바이트 또는 2바이트일 수 있습니다. 너비가 2바이트인 경우 첫 번째 바이트는 사용 중인 코드 페이지에 따라 특정 범위에서 선택된 특수한 "리드 바이트"입니다. 리드와 "트레일 바이트"를 함께 사용하여 고유한 문자 인코딩을 지정합니다.
프로그램 빌드에 대해 기호 _MBCS
가 정의된 경우 기반이 되는 CString
형식TCHAR
을 .에 매핑합니다char
. 리드 바이트 및 후행 바이트인 바이트를 CString
결정하는 것은 사용자의 달려 있습니다. C 런타임 라이브러리는 이를 확인하는 데 도움이 되는 함수를 제공합니다.
DBCS에서 지정된 문자열은 모든 싱글 바이트 ANSI 문자, 모든 더블 바이트 문자 또는 두 문자의 조합을 포함할 수 있습니다. 이러한 가능성을 위해서는 문자열 구문 분석에서 특별히 주의해야 합니다. 여기에는 개체가 포함됩니다 CString
.
참고 항목
MFC의 유니코드 문자열 serialization은 실행 중인 애플리케이션 버전에 관계없이 유니코드 및 MBCS 문자열을 모두 읽을 수 있습니다. 데이터 파일은 프로그램의 유니코드 및 MBCS 버전 간에 이식 가능합니다.
CString
멤버 함수는 호출하는 C 런타임 함수의 특수 "제네릭 텍스트" 버전을 사용하거나 유니코드 인식 함수를 사용합니다. 따라서 예를 들어 함수가 CString
일반적으로 호출 strcmp
하는 경우 대신 해당 제네릭 텍스트 함수 _tcscmp
를 호출합니다. 기호 _MBCS
및 _UNICODE
정의 _tcscmp
방법에 따라 다음과 같이 매핑됩니다.
기호 | 함수 |
---|---|
정의된 _MBCS |
_mbscmp |
정의된 _UNICODE |
wcscmp |
두 기호 모두 정의하지 않음 | strcmp |
참고 항목
기호이며 _MBCS
_UNICODE
상호 배타적입니다.
모든 런타임 문자열 처리 루틴에 대한 제네릭 텍스트 함수 매핑은 C 런타임 라이브러리 참조에서 설명합니다. 목록은 국제화를 참조하세요.
마찬가지로 메서드 CString
는 제네릭 데이터 형식 매핑을 사용하여 구현됩니다. MBCS와 유니코드를 모두 사용하도록 설정하기 위해 MFC는 를 char
char
* 사용 TCHAR
하거나, 사용하거나wchar_t
LPTSTR
, 사용하거나,* LPCTSTR
const char
wchar_t*
const wchar_t*
이렇게 하면 MBCS 또는 유니코드에 대한 올바른 매핑이 보장됩니다.