Unicode 及多位元組字元集 (MBCS) 支援
有些語言,例如日文和中文,具有大型字元集。 為了支持這些市場的程序設計,Microsoft基礎類庫 (MFC) 可讓兩種不同的方法來處理大型字元集:
Unicode、
wchar_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
。 如果為程式建置定義符號 _UNICODE
, TCHAR
則會定義為類型 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
,請輸入 TCHAR
CString
以為基礎之的, 會對應至 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 會針對 或使用 TCHAR
或wchar_t*
char
* wchar_t
LPTSTR
,以及LPCTSTR
*const wchar_t*
const char
或 。char
這些可確保 MBCS 或 Unicode 的正確對應。