Unicode字符集和多字符集

2021-10-03 06:54:08 字數 1327 閱讀 7615

由於各國語言的加入,ascii已經不能滿足資訊交流的需要,因此,為了能夠表示其它國家的文字,各國在ascii的基礎上制定了自己的字符集,它們正式的名稱應該是mbcs(multi-byte chactacter system,即多位元組字元系統)。

型別說明

unicode

ansi

通用型別

字元wchar

char

tchar

字串指標

pwstr

lpstr

ptstr

常量字串指標

pcwstr

lpcstr

lpctstr

(1) 將文字串視為字元陣列,而不是chars陣列或位元組陣列。

(2) 將通用資料型別(如tchar和ptstr)用於文字字元和字串。

(3) 將顯式資料型別(如byte和pbyte)用於位元組、位元組指標和資料快取。

(4) 將text巨集用於原義字元和字串。

(5) 執行全域性性替換(例如用ptstr替換pstr)。

(6) 修改字串運算問題。例如函式通常希望在字元中傳遞乙個快取的大小,而不是位元組。這意味著不應該傳遞sizeof(szbuffer),而應該傳遞(sizeof(szbuffer)/sizeof(tchar)。另外,如果需要為字串分配乙個記憶體塊,並且擁有該字串中的字元數目,那麼請記住要按位元組來分配記憶體。這就是說,應該呼叫malloc(ncharacters *sizeof(tchar)),而不是呼叫malloc(ncharacters)。

ansi 操作函式以str開頭 strcpy

unicode 操作函式以wcs開頭 wcscpy

mbcs 操作函式以_mbs開頭 _mbscpy

ansi/unicode 操作函式以_tcs開頭 _tcscpy(c執行期庫)

ansi/unicode 操作函式以lstr開頭 lstrcpy(windows函式)

所有新的和未過時的函式在windows2000中都同時擁有ansi和unicode兩個版本。ansi版本函式結尾以a表示;unicode版本函式結尾以w表示。windows會如下定義:

#ifdef unicode

#define createwindowex createwindowexw

#else

#define createwindowex createwindowexa

#endif // !unicode

ansi 「string」

unicode l「string」

ansi/unicode _t(「string」)或_text(「string」)if( szerror[0] == _text(『j』) )

單位元組字符集,多位元組字符集,Unicode

我們在這裡介紹一下字元型別。這裡有3種編碼模式對應3種字元型別。第一種編碼型別是單子節字符集 single byte character set or sbcs 在這種編碼模式下,所有的字元都只用乙個位元組表示。ascii是sbcs。乙個位元組表示的0用來標誌sbcs字串的結束。第二種編碼模式是多位...

寬位元組字符集和多字符集

unicode 寬位元組字符集 1.如何取得乙個既包含單位元組字元又包含雙位元組字元的字串的字元個數?可以呼叫microsoft visual c 的執行期庫包含函式 mbslen來操作多位元組 既包括單位元組也包括雙位元組 字串。呼叫strlen函式,無法真正了解字串中究竟有多少字元,它只能告訴你...

Unicode與多字符集(ANSI)

一 unicode與多字符集 ansi 是兩種文字編碼方式 1 ansi時,各國文字的編碼之間有些重疊編碼 編碼衝突 2 unicode,各國編碼統一編碼,無論在哪國的作業系統中,各國的文字都能無障礙顯示 3 wchar t是屬於雙位元組變數 4 unicode的字串常量需要在前面加乙個大寫的l,c...