다음을 통해 공유


유니코드 및 멀티바이트 문자 집합(MBCS) 지원

일부 언어(예: 일본어 및 중국어)에는 큰 문자 집합이 있습니다. 이러한 시장에 대한 프로그래밍을 지원하기 위해 MFC(Microsoft Foundation Class Library)를 사용하면 큰 문자 집합을 처리하는 두 가지 방법을 사용할 수 있습니다.

참고 항목

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는 를 charchar* 사용 TCHAR 하거나, 사용하거나wchar_tLPTSTR, 사용하거나,* LPCTSTR const charwchar_t*const wchar_t* 이렇게 하면 MBCS 또는 유니코드에 대한 올바른 매핑이 보장됩니다.

참고 항목

문자열(ATL/MFC)
문자열 조작