雙位元組字元集
雙位元組字元集(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 更為複雜。 因此,支援 DBCS 的應用程式必須使用特殊函式,例如 _mbsstr,而不是 StrStr 函式。
您的應用程式使用 DBCS Windows 代碼頁搭配「A」版本的 Windows 函式。 請參閱函式原型 和 代碼頁的 慣例。 為了協助識別 DBCS 代碼頁,應用程式可以使用 GetCPInfo 或 GetCPInfoEx 函式。 應用程式可以使用 IsDBCSLeadByte 函式來判斷指定的值是否可以作為 2 位元組字元的前置位元組。 此外,應用程式可以使用 MultiByteToWideChar 和 WideCharToMultiByte 函式來對應 Unicode 和 DBCS 字符串。
相關主題