多位元組字元集 (MBCS) 的支援
多位元組字元集 (Multibyte Character Set,MBCS) 是 Unicode 另一種支援字元集的替代方法,例如不能以單一位元組表示的日文和中文。 如果您正在為國際化市場設計程式,考慮使用 Unicode 或 MBCS,或啟用您的程式,這樣您的程式可以藉著更改切換來建置它。
最常見的 MBCS 實作是雙位元組字元集 (DBCS)。 Visual C++ (尤其 MFC) 大體上完全支援 DBCS。
如需範例,請參閱 MFC 原始程式碼檔案。
使用於其語言用大型字元集的市場之平台,Unicode 最好的替代方法是 MBCS。 MFC 會使用可國際化的資料型別和 C 執行階段函式來支援 MBCS。 您應該在您的程式碼裡做相同的事。
在 MBCS 之下,是以 1 或 2 個位元組來編碼字元。 在 2 個位元組字元裡,第一個位元組 (或前導位元組) 表示它和下一個位元組會被解譯成一個字元。 第一個位元組來自保留作前置位元組用途的編碼範圍。 哪一位元組範圍可以做為前置位元組則根據使用的字碼頁。 例如,日語字碼頁 932 使用範圍 0x81 到 0x9F 來當做前置位元組,但是韓國字碼頁 949 使用不同的範圍。
在 MBCS 程式設計中考慮下列各點:
環境裡的 MBCS 字元
MBCS 字元可以出現在字串裡,例如檔案或目錄名稱。編輯操作
MBCS 應用程式裡的編輯作業應該在字元上操作,而不是在位元組上。 插入號 (Caret) 不應將字元分割,向右鍵應該向右移一個字元,等等。 Delete 應該刪除字元;Undo 應該重新插入。字串處理
在使用 MBCS 的應用程式裡,字串處理造成特殊的問題。 兩種寬度的字元在單一字串裡混和,因此您必須記得檢查前導位元組。執行階段程式庫支援
C 執行階段程式庫和 MFC 會支援單一位元組、MBCS 和 Unicode 程式設計。 單一位元組字串會以執行階段函式的 str 家族進行處理,MBCS 字串是以對應的 _mbs 函式來處理,而 Unicode 字串則是以對應的 wcs 函式來處理。 MFC 類別成員函式的實作會使用的可移植執行階段函式,在正確情況下會對應到正常的 str 函式家族、MBCS 函式或 Unicode 函式,這些都會在「MBCS/Unicode 移植性」中加以說明。MBCS/Unicode 移植性
使用標頭檔 Tchar.h,您可以從相同的來源建立單一位元組、MBCS 和 Unicode 應用程式。 Tchar.h 定義以 _tcs 為前置的巨集,該巨集會對應到適當的 str、_mbs 或 wcs 函式。 若要建置 MBCS,定義 _MBCS 符號。 若要建置 Unicode,定義 _UNICODE 符號。 根據預設,_MBCS 是為 MFC 應用程式定義。 如需詳細資訊,請參閱 TCHAR.H 裡泛用文字的對應。
注意事項 |
---|
如果定義了 _UNICODE 和 _MBCS,行為就會是未定義的。 |
Mbctype.h 和 Mbstring.h 標頭檔定義在某些情況下可能會需要的 MBCS 特定函式和巨集。 例如,_ismbblead 會告訴您字串中的特定位元組是否為前置字元組。
為了國際化的可移植性,以 Unicode 或多位元組字元集 (MBCS) 撰寫程式。