Unicode 和多位元組字元集 (MBCS) 的支援
某些語言,例如,例如日文和中文,具有擴充字元集。 若要支援程式設計這些市場的, Microsoft Foundation Class 程式庫 (MFC) 為處理大型字元集的兩種不同方法啟用:
Unicode
多位元組字元集 (MBCS)
MFC 支援 Unicode 字串
整個類別庫為 Unicode 字元和字串有條件地啟用。 特別的是,類別 CString 支援 Unicode。
UAFXCW.LIB |
UAFXCW.PDB |
。 |
UAFXCWD.PDB |
MFCxxU.LIB |
MFCxxU.PDB |
MFCxxU.DLL |
MFCxxUD.LIB |
MFCxxUD.PDB |
MFCxxUD.DLL |
MFCSxxU.LIB |
MFCSxxU.PDB |
MFCSxxUD.LIB |
MFCSxxUD.PDB |
MFCMxxU.LIB |
MFCMxxU.PDB |
MFCMxxU.DLL |
MFCMxxUD.LIB |
MFCMxxUD.PDB |
MFCMxxUD.DLL |
(xx 代表檔案的版本號碼,例如, 「80 "表示 8.0 版)。
CString 根據 TCHAR 資料型別。 如果符號是為您的程式 _UNICODE 組建定義, TCHAR 定義為型別 wchar_t, 16 位元字元編碼類型。 否則, TCHAR 定義為 char,正常的 8 位元字元編碼方式。 因此,在 Unicode 之下, CString 由 16 位元字元所組成。 沒有 Unicode,它是由型別所組成 char字元。
若要完成 Unicode 程式設計應用程式,您也必須:
使用 _T 巨集條件式程式碼常值字串被帶到 Unicode。
當您傳遞字串, "付款"監看函式引數是否會以位元組為在字元長度或長度。 如果使用 Unicode 字串,這項差異是很重要的。
使用 C 執行階段字串處理函式的可移植的版本。
為字元和字元指標使用下列資料型別:
您可以使用TCHARchar的位置。
您可以使用LPTSTRchar*的位置。
您可以使用LPCTSTRconst char*的位置。 CString 提供運算子 LPCTSTR 重新命名 CString 和 LPCTSTR之間轉換。
CString 也提供 Unicode 感知的建構函式、指派運算子和比較運算子。
如需程式設計的 Unicode 的相關資訊,請參閱 Unicode 主題。 執行階段程式庫參考 定義它的所有字串處理函式的可移植的版本。 請參閱類別 國際化。
MFC 支援 MBCS 字串
類別庫也只啟用多位元組字元集,但是,為雙位元組字元集 (DBCS) (DBCS)。
在多位元組字元集,寬字元可以是兩個位元組。 如果寬度是兩個位元組,它的第一個位元組與特定範圍已選取,字碼頁正在使用中的特殊「前導位元組」。 組長一起,而「Trail Byte」指定唯一的字元編碼方式。
如果符號 _MBCS 用於您的程式中定義中,型別 TCHAR組建, CString ,對應至 char。 它是由決定在 CString 哪些位元組是前導位元組,而且您要決定是前導位元組。 說明您的 C 執行階段程式庫提供可以進行判斷。
在下,特定 DBCS 字串可以包含任何單位元組 ANSI 字元、所有雙位元組字元或結合兩者。 下列可能需要在剖析字串的特殊處理。 這包括 CString 物件。
![]() |
---|
MFC 中的 Unicode 字串序列化可以讀取應用程式版本執行的 Unicode 和 MBCS 字串。您的資料檔案是可移植的 Unicode 和在您的程式之間 MBCS 版。 |
這些呼叫 C 執行階段函式的CString 成員函式會使用特殊的泛型「文字」版本,或已使用 Unicode 感知的函式。 因此,例如,,如果 CString 函式通常會呼叫 strcmp,它會呼叫對應的泛用文字函式 _tcscmp 。 根據符號 _MBCS 和 _UNICODE 何種定義, _tcscmp 對應如下所示:
_MBCS 定義 |
_mbscmp |
_UNICODE 定義 |
wcscmp |
這些符號未定義 |
strcmp |
![]() |
---|
符號 _MBCS 和 _UNICODE 互斥 (Mutually Exclusive)。 |
泛用文字對應函式的所有執行階段字串處理常式在 C 執行階段程式庫參考討論。 尤其,請參閱 國際化。
同樣地,您可以使用「泛型」資料型別對應, CString 方法實作。 若要啟用 MBCS 和 Unicode, MFC 會使用 charchar*的 TCHAR , const char*的 LPTSTR 和 LPCTSTR 。 這些保證 Unicode 或 MBCS 的正確對應。