MBCS(멀티바이트 문자 집합) 지원
MBCS(멀티바이트 문자 집합)는 일본어 및 중국어와 같이 싱글바이트로 표현할 수 없는 문자 집합을 지원하기 위한 이전의 접근 방식입니다. 새 개발을 수행하는 경우 최종 사용자에게 표시되지 않는 시스템 문자열을 제외한 모든 문자열에 유니코드를 사용해야 합니다. MBCS는 이전 기술이며 새로운 개발에 권장되지 않습니다.
가장 일반적인 MBCS 구현은 DBCS(더블바이트 문자 집합)입니다. 일반적으로 Visual C++는 DBCS를 전적으로 지원하고 MFC는 특정한 경우에 지원합니다.
경고
Visual Studio 2013 및 이후 버전에서 다중 문자 인코딩 (MBCS) 을 위한 MFC 라이브러리는 MSDN 다운로드 사이트를 통해 Visual Studio 고객 (Pro, Premium 및 Ultimate 버전의 경우에만) 에게 추가 기능으로 제공될 것입니다.
모든 지역화된 버전의 라이브러리가 설치되며, 440MB의 드라이브 용량을 필요로 합니다.in-box MFC 기능이 활성화된 Visual Studio Pro, Premium 또는 Ultimate 버전이 설치된 모든 장비에 설치할 수 있습니다.
Visual Studio를 제거하거나 복구할 경우, MBCS 라이브러리도 제거되거나 복구됩니다.그러나 MFC 기능을 제거하면 MBCS 라이브러리는 시스템에 남아있습니다.MBCS 라이브러리를 복구하는 경우, Visual Studio는 전혀 수정되지 않습니다.
Visual Studio 2013 및 그 이후 버전의 재배포 가능 패키지에는 MBCS MFC DLL이 여전히 포함되어 있습니다.고객에게 이 DLL을 다시 배포하는 데에 추가 단계가 필요하지 않습니다.
샘플을 보려면 MFC 소스 코드 파일을 참조하십시오.
큰 문자 집합의 언어를 사용하는 시장의 플랫폼에서는 유니코드 대신 MBCS를 사용하는 것이 좋습니다. MFC는 국가별 데이터 형식과 C 런타임 함수를 사용하여 MBCS를 지원합니다. 코드를 작성할 때 동일한 방법을 사용해야 합니다.
MBCS에서 문자는 1바이트나 2바이트로 인코딩됩니다. 2바이트 문자에서 첫 바이트 또는 선행 바이트는 자신과 다음 바이트를 한 문자로 해석하도록 지시합니다. 첫 바이트는 선행 바이트로 사용하도록 예약된 코드 범위에 있습니다. 선행 바이트가 될 수 있는 바이트 범위는 사용 중인 코드 페이지에 따라 달라집니다. 예를 들어, 일본어 코드 페이지 932는 0x81 - 0x9F 범위를 선행 바이트로 사용하지만, 한국어 코드 페이지 949는 다른 범위를 사용합니다.
MBCS 프로그래밍에는 다음 사항을 모두 고려해야 합니다.
해당 환경의 MBCS 문자
파일 이름이나 디렉터리 이름과 같은 문자열에 MBCS 문자가 나올 수 있습니다.편집 작업
MBCS 응용 프로그램에서 편집 작업은 바이트가 아니라 문자에 대해 수행됩니다. 캐럿은 문자를 분할하지 않으며 오른쪽 화살표 키는 오른쪽으로 한 문자 이동시킵니다. 삭제는 한 문자를 삭제하며 실행 취소는 문자를 다시 삽입합니다.문자열 처리
MBCS를 사용하는 응용 프로그램에서 문자열을 처리할 경우 특별한 문제가 발생합니다. 두 가지 너비의 문자가 한 문자열에 함께 사용되기 때문에 선행 바이트를 확인해야 합니다.런타임 라이브러리 지원
C 런타임 라이브러리와 MFC는 싱글바이트, MBCS 및 유니코드 프로그래밍을 지원합니다. 싱글바이트 문자열은 str 런타임 함수 패밀리를 사용하여 처리되고, MBCS 문자열은 해당하는 _mbs 함수를 사용하여 처리되며, 유니코드 문자열은 해당하는 wcs 함수를 사용하여 처리됩니다. MFC 클래스 멤버 함수 구현에서는 "MBCS/유니코드 이식성"에서 설명한 대로 해당 환경에서 정상적인 str 함수 패밀리, MBCS 함수 또는 유니코드 함수로 매핑되는 이식 가능 런타임 함수를 사용합니다.MBCS/유니코드 이식성
Tchar.h 헤더 파일을 사용하여 동일한 소스로부터 싱글바이트, MBCS 및 유니코드 응용 프로그램을 빌드할 수 있습니다. Tchar.h는 str, _mbs 또는 wcs 함수로 적절하게 매핑되는 _tcs 접두사가 있는 매크로를 정의합니다. MBCS를 빌드하려면 _MBCS 기호를 정의합니다. 유니코드를 빌드하려면 _UNICODE 기호를 정의합니다. MFC 응용 프로그램의 경우 기본적으로 _MBCS가 정의됩니다. 자세한 내용은 Tchar.h의 제네릭 텍스트 매핑을 참조하십시오.
참고
_UNICODE와 _MBCS를 모두 정의하면 동작이 정의되지 않습니다.
Mbctype.h 및 Mbstring.h 헤더 파일은 필요한 경우에 따라 MBCS 관련 함수와 매크로를 정의합니다. 예를 들어, _ismbblead는 문자열의 특정 바이트가 선행 바이트인지 여부를 알려 줍니다.
국가별 이식성을 위해 유니코드 또는 MBCS(멀티바이트 문자 집합)를 사용하여 프로그램을 코딩하십시오.