共用方式為


Unicode and Multibyte Character Set (MBCS) Support

某些語言,例如日文和中文,都具有大型字元集。 對這些市場的程式支援,以下為 Microsoft Foundation Class Library (MFC) 程式庫提供對管理大型字元集的兩種不同方法啟用:

  • Unicode

  • 多位元組字元集 (MBCS)

對於所有新開發,您應該使用 Unicode。

Unicode 字串的 MFC 支援

整個類別庫為 Unicode 字元和字串是有條件地啟用。 特別是, CString 類別都支援 Unicode。

UAFXCW.LIB

UAFXCW.PDB

UAFXCWD.LIB

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 是被定義為16 位元字元編碼類型的 wchar_t型別。 否則, TCHAR 會被定義為正常 8 位元字元編碼方式的 char。 因此,在 Unicode 中, CString 是 16 位元字元所組成。 如果沒有 Unicode,它是由 char型別組成字元。

若要完成 Unicode 程式設計應用程式,您也必須:

  • 使用 _T 巨集條件式程式碼常值字串是可攜式至 Unicode。

  • 當您將字串傳出,請注意函式的引數是需要字元的長度或是位元的長度。 如果您使用 Unicode 字串,此差異是非常重要的。

  • 使用 C 執行階段字串處理函式的可攜式版本。

  • 對於字元和字元指標,請使用下列資料型別:

    • TCHAR 中您會用到 char。

    • LPTSTR 中您會用到 char*。

    • LPCTSTR 中您會用到 const char*。 CString 提供 LPCTSTR 運算子給在 CStringLPCTSTR之間的轉換。

CString 也提供 Unicode 感知建構函式、指派運算子和比較運算子。

如需程式設計的 Unicode 的相關資訊,請參閱 Unicode 主題執行階段程式庫參考 定義它所有的字串處理函式的可攜式版本。 請參閱 國際化分類。

MFC 所支援的 MBCS 字串

警告

MBCS 字串是舊版技術,不應該在新的專案中使用。下列資訊適用於您需要維護現存 MBCS 程式碼的案例,而且不是可以升級程式碼就可使用 Unicode。

類別庫也可使用多位元組字元集,不過只有雙位元組字元集 (DBCS)。

安全性注意事項安全性提示

在 Visual Studio 2013 (含) 以後版本, MFC DLL 的 MBCS 版是在 Visual Studio 中可用增益集從 MSDN 下載網站。如需詳細資訊,請參閱 MFC MBCS DLL Add-in

在多位元組字元集,一個字元的長度可以是一個或兩個位元組。 如果長度是兩個位元組,它的第一個位元 「前導位元」 是來自已選取的特定範圍,此範圍是由正在使用的字碼頁所訂。 前導位元」和「後隨位元」一起決定特有的字元編碼方式。

如果符號 _MBCS 為您的程式中定義基於CString 的型別 TCHAR,則對應至char。 您可以決定在 CString 的哪個位元組是前導位元組和後隨位元組。 C 執行階段程式庫可以提供此判斷。

在 DBCS 下,特定字串可以包含任何單一位元組的 ANSI 字元、所有雙位元組字元或兩者的組合。 這些可能需要在剖析字串做特殊處理。 這包括 CString 物件。

注意事項注意事項

Unicode MFC 中的字串還原序列化可以讀取應用程式版本執行的 Unicode 和 MBCS 字串,無論您在哪個應用程式版本上執行。您的資料檔案是可攜式在 Unicode 和 MBCS 版本程式之間。

這些被呼叫的CString 成員函式使用 C 執行階段函式特殊泛型文字版本,或是使用 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*的 LPTSTRLPCTSTR 。 這會保證 Unicode 或 MBCS 的正確對應。

請參閱

參考

字串操作 (CRT)

其他資源

Strings (ATL/MFC)