더블 바이트 문자 집합

"확장된 8비트 문자 집합"으로도 알려진 DBCS(더블 바이트 문자 집합)는 코드 페이지로 구현되는 확장된 SBCS( 싱글 바이트 문자 집합 )입니다. DBCS는 원래 일본어 및 중국어와 같은 언어를 처리하도록 SBCS 디자인을 확장하기 위해 개발되었습니다. 영어를 쓰는 데 사용되는 숫자와 문자를 포함하여 DBCS의 일부 문자에는 단일 바이트 코드 값이 있습니다. 중국어 표기법 또는 일본어 간지와 같은 다른 문자에는 더블 바이트 코드 값이 있습니다. DBCS는 Windows 코드 페이지 또는 OEM 코드 페이지에 해당할 수 있습니다. DBCS 코드 페이지에는 네이티브가 아닌 코드 페이지(예: EBCDIC 코드 페이지)가 포함될 수도 있습니다. 이러한 코드 페이지의 정의는 코드 페이지를 참조하세요.

참고

새 Windows 애플리케이션은 유니 코드 를 사용하여 다양한 코드 페이지의 불일치를 방지하고 지역화를 용이하게 해야 합니다. 그러나 일부 레거시 프로토콜에는 DBCS 코드 페이지를 사용해야 할 수 있습니다. 각 DBCS 코드 페이지는 서로 다른 문자를 지원하지만 유니코드에서 제공하는 전체 문자 범위를 지원하는 페이지는 없습니다. 각 DBCS 코드 페이지는 다르게 인코딩된 다른 하위 집합을 지원합니다. 다른 코드 페이지의 동일한 데이터 값이 다른 문자를 인코딩할 수 있으므로 한 DBCS 코드 페이지에서 다른 DBCS 코드 페이지로 변환된 데이터는 손상될 수 있습니다. 유니코드에서 DBCS로 변환된 데이터는 데이터가 손실될 수 있습니다. 지정된 코드 페이지가 특정 유니코드 데이터에 사용되는 모든 문자를 나타내지 못할 수 있기 때문입니다.

 

DBCS 문자열을 해석하려면 애플리케이션이 문자열의 시작 부분에서 시작하여 앞으로 검색해야 합니다. 문자열에서 리드 바이트가 발생하는 시점을 추적하고 다음 바이트를 동일한 문자의 후행 부분으로 처리합니다. 애플리케이션이 문자열을 한 번에 하나씩 검색하고 백슬래시("\")를 나타내는 코드 값으로 보이는 바이트가 발견되면 해당 바이트는 단순히 2 바이트 문자의 후행 바이트일 수 있습니다. 애플리케이션은 앞의 바이트가 리드 바이트인지 확인하기 위해 1 바이트를 백업할 수 없습니다. 해당 바이트 값이 리드 바이트와 트레일 바이트 모두로 사용될 수 있기 때문일 수 있습니다. 따라서 애플리케이션에는 기본적으로 가능한 백슬래시와 동일한 문제가 있습니다. 즉, 부분 문자열 검색은 SBCS 또는 유니코드보다 DBCS에서 훨씬 더 복잡합니다. 따라서 DBCS를 지원하는 애플리케이션은 StrStr 함수 대신 _mbsstr 같은 특수 함수를 사용해야 합니다.

애플리케이션은 Windows 함수의 "A" 버전과 함께 DBCS Windows 코드 페이지를 사용합니다. 함수 프로토타입 및 코드 페이지에대한 규칙을 참조하세요. DBCS 코드 페이지를 식별하기 위해 애플리케이션은 GetCPInfo 또는 GetCPInfoEx 함수를 사용할 수 있습니다. 애플리케이션은 IsDBCSLeadByte 함수를 사용하여 지정된 값을 2바이트 문자의 리드 바이트로 사용할 수 있는지 여부를 확인할 수 있습니다. 또한 애플리케이션은 MultiByteToWideCharWideCharToMultiByte 함수를 사용하여 유니코드와 DBCS 문자열 간에 매핑할 수 있습니다.

문자 집합

싱글 바이트 문자 집합