分享方式:


Unicode 的支援

Unicode 是支援所有字元集的規格,包括無法在單一位元組中表示的字元集。 如果您要為國際市場進行程式設計,建議您使用 Unicode 或 多位元組字元集 (MBCS)。 或者,撰寫程式碼,讓您可以藉由變更參數來建置程式。

寬字元是 2 個位元組的多語系字元碼。 數以萬計的字元,包括全球現代運算中使用的幾乎所有字元,包括技術符號和特殊發佈字元,都可以根據 Unicode 規格來表示為使用 UTF-16 編碼的單一寬字元。 只能以一個寬字元表示的字元可以使用 Unicode Surrogate 配對功能,在 Unicode 配對中表示。 由於幾乎所有常用的字元都以單一 16 位寬字元表示 UTF-16,因此使用寬字元可簡化使用國際字元集的程式設計。 使用 UTF-16LE 編碼的寬字元(適用于小數位元)是 Windows 的原生字元格式。

寬字元字串會以 wchar_t[] 陣列呈現,且由 wchar_t* 指標指向。 任何 ASCII 字元都可以寬字元呈現,方法是在該字元前附加字母 L。 例如,L'\0' 是結束寬 (16 位元) NULL 字元。 同樣地,任何 ASCII 字串常值都可以寬字元字串常值呈現,方法是在 ASCII 常值前附加字母 L (L"Hello")。

一般而言,寬字元會比多位元組字元佔用更多的記憶體空間,但處理起來更快。 此外,一次只能以多位元組編碼來表示一個地區設定,而世界上的所有字元集則以 Unicode 表示同時表示。

MFC 架構完全啟用 Unicode,MFC 透過使用可移植巨集,完成啟用 Unicode,如下表所示。

MFC 中的可移植資料型別

非可移植資料型別 由此巨集取代
char, wchar_t _TCHAR
char*LPSTR (Win32 資料類型)、 LPWSTR LPTSTR
const char*LPCSTR (Win32 資料類型)、 LPCWSTR LPCTSTR

類別 CString 會使用 _TCHAR 做為其基底,並提供建構函式和運算子,以方便轉換。 除了作業的基本單位是 16 位元的字元而非 8 位元的位元組之外,Unicode 的大部分字串作業都可以使用用於處理 Windows ANSI 字元集的相同邏輯,來進行撰寫。 與使用多位元組字元集不同,您無需 (且不應該) 將 Unicode 字元視為兩個不同的位元組。 不過,您必須處理以寬字元代號表示的單一字元的可能性。 一般而言,請勿撰寫程式碼,假設字串的長度與字串包含的字元數相同,無論是窄字元還是寬。

您想要做什麼事?

另請參閱

文字和字串
wmain 使用的支援