Share via


MBCS(멀티바이트 문자 집합) 지원

MBCS(멀티바이트 문자 집합)는 일본어 및 중국어와 같이 싱글바이트로 표현할 수 없는 문자 집합을 지원하기 위해 유니코드 대신 사용합니다. 국제 시장을 대상으로 프로그래밍할 경우 유니코드와 MBCS 중 하나를 사용하거나 스위치를 변경하여 둘 중 하나로 빌드할 수 있도록 프로그램을 활성화합니다.

가장 일반적인 MBCS 구현은 DBCS(더블바이트 문자 집합)입니다. 일반적으로 Visual C++는 DBCS를 전적으로 지원하고 MFC는 특정한 경우에 지원합니다.

샘플을 보려면 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(멀티바이트 문자 집합)를 사용하여 프로그램을 코딩하십시오.

수행할 작업

참고 항목

개념

C++의 문자 집합

Visual C++에서 MBCS 지원