分享方式:


多位元組字元集 (MBCS) 的支援

多位元組字元集 (Multibyte Character Set,MBCS) 是支援字元集的舊方法,例如不能以單一位元組表示的日文和中文。 如果您進行新開發,除了終端使用者看不見的系統字串之外,您應該對所有文字字串使用 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 的應用程式中,字串處理會造成特殊的問題。 在單一字串中會混用這兩種寬度的字元;因此,您必須記得檢查前導位元組。

執行階段程式庫支援

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_mbswcs 函式。 若要建立 MBCS,請定義符號 _MBCS。 若要建置 Unicode,請定義符號 _UNICODE。 根據預設,會為 MFC 應用程式定義 _UNICODE。 如需詳細資訊,請參閱 tchar.h 中的泛型文字對應。

注意

如果您同時定義 和 _MBCS,則行為是未定義的_UNICODE

Mbctype.h 和 Mbstring.h 標頭檔會定義 MBCS 特有的函式和巨集,在某些情況下您可能需要。 例如,_ismbblead 會告訴您在字串中的特定位元組是否為前導位元組。

若要進行國際可移植性,請使用 Unicode 或多位元組位元集來撰寫程式代碼(MBCS)。

您想要做什麼事?

另請參閱

文字和字串
Visual C++ 中的 MBCS 支援