다음을 통해 공유


국가별 사용

대부분의 기존 C 및 C++ 코드는 국제 애플리케이션에서 제대로 작동하지 않는 문자 및 문자열 조작에 대해 가정합니다. MFC와 런타임 라이브러리는 모두 유니코드 또는 MBCS를 지원하지만 아직 해야 할 일이 있습니다. 이 섹션에서는 Visual C++에서 "국제 사용"의 의미를 설명합니다.

  • 유니코드와 MBCS는 MFC 함수 매개 변수 목록 및 반환 형식의 이식 가능한 데이터 형식을 통해 사용하도록 설정됩니다. 이러한 형식은 빌드에서 기호 또는 기호 _UNICODE _MBCS (DBCS를 의미)를 정의하는지 여부에 따라 적절한 방법으로 조건부로 정의됩니다. MFC 라이브러리의 다른 변형은 빌드에서 정의하는 두 기호 중 어느 것에 따라 애플리케이션과 자동으로 연결됩니다.

  • 클래스 라이브러리 코드는 이식 가능한 런타임 함수 및 기타 방법을 사용하여 올바른 유니코드 또는 MBCS 동작을 보장합니다.

  • 코드에서 특정 종류의 국제화 작업을 처리해야 합니다.

    • 두 환경 중 하나에서 MFC를 이식할 수 있도록 하는 동일한 이식 가능한 런타임 함수를 사용합니다.

    • 매크로를 사용하여 두 환경 모두에 리터럴 문자열과 문자를 이식할 수 있도록 합니다 _T . 자세한 내용은 tchar.h의 일반 텍스트 매핑을 참조하세요.

    • MBCS에서 문자열을 구문 분석할 때는 주의해야 합니다. 유니코드에서는 이러한 예방 조치가 필요하지 않습니다. 자세한 내용은 MBCS 프로그래밍 팁을 참조 하세요.

    • 애플리케이션에서 ANSI(8비트) 및 유니코드(16비트) 문자를 혼합하는 경우 주의해야 합니다. 프로그램의 일부 부분에서 ANSI 문자를 사용할 수 있고 다른 부분에서는 유니코드 문자를 사용할 수 있지만 동일한 문자열에서 혼합할 수는 없습니다.

    • 애플리케이션에서 문자열을 하드 코드하지 마세요. 대신 애플리케이션의 .rc 파일에 추가하여 STRINGTABLE 리소스로 만듭니다. 그런 다음 소스 코드를 변경하거나 다시 컴파일하지 않고도 애플리케이션을 지역화할 수 있습니다. STRINGTABLE 리소스에 대한 자세한 내용은 문자열 편집기를 참조 하세요.

참고 항목

유럽 및 MBCS 문자 집합에는 악센트가 있는 문자와 같이 문자 코드가 0x80보다 큰 문자가 있습니다. 대부분의 코드는 서명된 문자를 사용하므로 0x80보다 큰 문자는 변환 int할 때 기호 확장됩니다. 기호 확장 문자가 음수이면 배열 외부의 인덱스이므로 배열 인덱싱에 문제가 있습니다. 일본어와 같은 MBCS를 사용하는 언어도 고유합니다. 문자는 1바이트 또는 2바이트로 구성될 수 있으므로 항상 두 바이트를 동시에 조작해야 합니다.

참고 항목

유니코드 및 멀티바이트 문자 집합(MBCS)
국제화 전략