雙位元組字元集

雙位元組字元集 (DBCS) 也稱為「展開的 8 位字元集」,是 (SBCS) 實作為字碼頁的擴充 單一位元組字元集 。 DBCS 原本是開發來擴充 SBCS 設計,以處理日文和中文等語言。 DBCS 中的某些字元,包括用來撰寫英文的數位和字母,都有單一位元組程式碼值。 其他字元,例如中文語意或日文漢字,都有雙位元組程式碼值。 DBCS 可以對應至 Windows 字碼頁或 OEM 字碼頁。 DBCS 字碼頁也可以包含非原生字碼頁,例如 EBCDIC 字碼頁。 如需這些字碼頁的定義,請參閱 字碼頁

注意

新的 Windows 應用程式應該使用 Unicode 來避免不同字碼頁的不一致,並方便當地語系化。 不過,某些舊版通訊協定可能需要使用 DBCS 字碼頁。 每個 DBCS 字碼頁都支援不同的字元,但沒有頁面支援 Unicode 提供的完整字元廣度。 每個 DBCS 字碼頁都支援不同的子集,以不同的編碼方式。 從一個 DBCS 字碼頁轉換成另一個資料頁的資料可能會損毀,因為不同字碼頁上的相同資料值可以編碼不同的字元。 從 Unicode 轉換成 DBCS 的資料可能會遺失資料,因為指定的字碼頁可能無法代表該特定 Unicode 資料中使用的每一個字元。

 

若要解譯 DBCS 字串,應用程式必須從字串開頭開始並向前掃描。 它會在字串中遇到前置位元組時持續追蹤,並將下一個位元組視為相同字元的尾端部分。 如果應用程式一次掃描一個位元組字串,並遇到表示反斜線 (「\」) 的位元組,該位元組可能只是雙位元組字元的尾端位元組。 應用程式不能只備份一個位元組,以查看上述位元組是否為前置位元組,因為該位元組值可能有資格同時作為前置位元組和尾端位元組使用。 因此,應用程式基本上與可能的反斜線有相同的問題。 換句話說,子字串搜尋比 SBCS 或 Unicode 更複雜。 因此,支援 DBCS 的應用程式必須使用特殊函式,例如 _mbsstr,而不是 StrStr 函式。

您的應用程式使用 DBCS Windows 字碼頁搭配 「A」版本的 Windows 函式。 請參閱 函式原型程式字碼頁的慣例。 為了協助識別 DBCS 字碼頁,應用程式可以使用 GetCPInfoGetCPInfoEx 函式。 應用程式可以使用 IsDBCSLeadByte 函式來判斷指定的值是否可以當做 2 位元組字元的前置位元組使用。 此外,應用程式可以使用 MultiByteToWideCharWideCharToMultiByte 函式來對應 Unicode 和 DBCS 字串。

字元集

單一位元組字元集