共用方式為


Unicode 及多位元組字元集 (MBCS) 支援

有些語言,例如日文和中文,具有大型字元集。 為了支持這些市場的程序設計,Microsoft Foundation Class Library (MFC) 可讓兩種不同的方法來處理大型字元集:

  • Unicodewchar_t 以寬字元為基礎,以及編碼為UTF-16的字串。

  • 多位元組字元集 (MBCS)char 以地區設定特定字元集編碼的單一或雙位元組位元元和字串為基礎。

注意

Microsoft 建議 MFC Unicode 連結庫用於所有新的開發。
MBCS 連結庫在 Visual Studio 2013 和 Visual Studio 2015 中已被取代。 然而現在的情況已經有所改變。
從 Visual Studio 2017 開始,MBCS 連結庫不再已被取代,而且不會產生淘汰警告。

Unicode 字串的 MFC 支援

針對以UTF-16格式儲存在寬字元中的Unicode字元和字串,會有條件地啟用整個MFC類別庫。 特別是,類別 CString 已啟用 Unicode。

這些連結庫、調試程式和 DLL 檔案可用來支援 MFC 中的 Unicode:

MFC版本U.LIB
MFC版本UD。自由
MFCM版本U.LIB
MFCM版本UD。自由
MFCS版本U.LIB
MFCS版本UD。自由
UAFXCW。自由
UAFXCWD。自由

MFC版本U.PDB
MFC版本UD。Pdb
MFCM版本U.PDB
MFCM版本UD。Pdb
MFCS版本U.PDB
MFCS版本UD。Pdb
UAFXCW。Pdb
UAFXCWD。Pdb

MFC版本U.DLL
MFC版本UD.DLL
MFCM版本U.DLL
MFCM版本UD.DLL

version 代表檔案的版本號碼;例如,'140' 表示 14.0 版。

CString 是以數據類型為基礎 TCHAR 。 如果為程式建置定義符號 _UNICODETCHAR 則會定義為類型 wchar_t、16 位字元編碼類型。 否則, TCHAR 會定義為 char,這是一般 8 位字元編碼。 因此,在 Unicode 下,由 CString 16 位字元組成。 如果沒有 Unicode,它是由 類型的 char字元所組成。

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

  • _T使用 宏,以條件方式將常值字串編碼為可移植到 Unicode。

  • 當您傳遞字串時,請注意函式自變數需要字元長度或位元組長度。 如果您使用 Unicode 字串,則差異很重要。

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

  • 針對字元和字元指標使用下列資料類型:

    • 使用 TCHAR 使用 char的位置。

    • 使用 LPTSTR 使用 char*的位置。

    • 使用 LPCTSTR 使用 const char*的位置。 CString提供 在和 LPCTSTR之間CString轉換的運算符LPCTSTR

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

運行 時間連結庫參考 會定義其所有字串處理函式的可攜式版本。 如需詳細資訊,請參閱分類 國際化

MBCS 字串的 MFC 支援

類別庫也會針對多位元組字元集啟用,但僅適用於雙位元組位元集 (DBCS)。

在多位元組位元集中,字元可以是一或2個字節寬。 如果是 2 個字節寬,則其第一個字節是從特定範圍選擇的特殊「前置位元組」,視使用中的代碼頁而定。 結合在一起,前置和「尾端位元組」會指定唯一的字元編碼。

如果為程式建置定義符號_MBCS,請輸入 TCHARCString 以為基礎之的, 會對應至 char。 您必須判斷 中的 CString 位元組是前置位元組,以及哪些是尾端位元組。 C 執行時間連結庫會提供函式來協助您判斷這一點。

在 DBCS 下,指定的字串可以包含所有單一位元組 ANSI 字元、所有雙位元組位元,或兩者的組合。 這些可能性在剖析字串時需要特別小心。 這包括 CString 物件。

注意

不論您執行的應用程式版本為何,MFC 中的 Unicode 字串串序列化都可以讀取 Unicode 和 MBCS 字串。 您的數據檔可在程式的 Unicode 和 MBCS 版本之間移植。

CString 成員函式會使用他們所呼叫之 C 運行時間函式的特殊「泛型文字」版本,或使用 Unicode 感知函式。 因此,例如,如果函 CString 式通常會呼叫 strcmp,它會改為呼叫對應的泛型文字函式 _tcscmp 。 根據符號 _MBCS_UNICODE 的定義方式, _tcscmp 對應如下:

符號 函式
_MBCS 已定義 _mbscmp
_UNICODE 已定義 wcscmp
未定義兩個符號 strcmp

注意

符號 _MBCS_UNICODE 互斥。

C 執行時間連結庫參考討論所有運行時間字串處理程式的泛型文字函式對應。 如需清單,請參閱 國際化

同樣地, CString 方法是使用泛型數據類型對應來實作方法。 若要同時啟用 MBCS 和 Unicode,MFC 會針對 或使用 TCHARwchar_t*char*wchar_tLPTSTR ,以及LPCTSTR*const wchar_t*const char或 。char 這些可確保 MBCS 或 Unicode 的正確對應。

另請參閱

字串 (ATL/MFC)
字串操作