Unicode 的支援
Unicode 是一種規格,支援所有的字元集 (Character Set),包括不能在單一位元組表示的字元集。 如果您是針對國際市場來撰寫程式碼,請考慮使用 Unicode 或多位元組字元集 (MBCS),或讓您的程式可以藉著變更參數將其建置為支援其中一種字元集。
寬字元是兩個位元組雙語字元碼。 大多數全球現代計算環境中所使用的字元,包括各種技術符號和特殊印刷字元在內,都可以根據 Unicode 規格,以寬字元來表示。 不能以 1 個寬字元表示的字元,可以透過 Unicode 的 Surrogate 功能以一對寬字元來表示。 因為每一個寬字元永遠以 16 位元的固定大小來表示,所以使用寬字元簡化了含國際化字元集的程式設計。
寬字元字串是以 wchar_t[] 陣列來作表示,並且以 wchar_t* 指標指著。 任何 ASCII 字元可藉由在字元前面加上字母 L,用寬字元表示。 例如,L'\0' 是終止的寬 (16 位元) NULL 字元。 同樣的,任何 ASCII 字串常值可以寬字元字串常值來作表示,藉由在 ASCII 常值的前面加上字母 L (L"Hello")。
一般來說,寬字元需要的記憶體空間要比多位元組字元多,但處理較快。 除此之外,在多位元組編碼裡一次只能表示一個地區設定,然而全世界所有的字元集都可以同時用 Unicode 表示。
除了資料庫類別,MFC 架構完全支援 Unicode (ODBC 不支援 Unicode)。MFC 藉著完全使用可移植的巨集來完成啟用 Unicode,如下表所示。
MFC 裡可移植的資料型別
不可移植的資料型別 |
以這個巨集取代 |
---|---|
char |
_TCHAR |
char*、LPSTR (Win32 資料型別) |
LPTSTR |
const char*、LPCSTR (Win32 資料型別) |
LPCTSTR |
CString 類別使用 _TCHAR 來當做它的基底,並且提供建構函式和運算子以方便轉換。 大多數的 Unicode 字串作業可以使用處理 Windows ANSI 字元集的相同邏輯來撰寫,除了作業的基底單位是 16 位元字元而不是 8 位元位元組之外。 跟使用多位元組字元集 (MBCS) 不一樣,您不需要 (且不應該) 將 Unicode 字元視為兩個不同的字元組。