1、字符集(ASCII字符集、GBXXXX字符集、Unicode字符集)
1.1、ASCII字符集(ASCII編碼方案、EASCII編碼方案)
1.1.1、ASCII編碼方案
說明:美國信息交換標準代碼優點:7位字符集廣泛用於代表標準美國鍵盤上的字符或符號。
缺點:只能顯示26個基本拉丁字母、阿拉伯數目字和英式標點符號,因此只能用於顯示現代美國英語。
1.1.2、EASCII編碼方案
1.2、GBXXXXX字符集(GB2312編碼方案、GBK編碼方案、GB18030編碼方案、Big5編碼方案)
1.2.1、GB2312編碼方案
說明:信息交換用漢字編碼字符集·基本集1.2.2、GBK編碼方案
說明:非國家標準1.2.3、GB18030編碼方案
優點:與UTF-8相同,採用多字節編碼,每個字可以由1個、2個或4個字節組成。1.2.4、Big5編碼方案
說明:又稱爲大五碼或五大碼,是使用繁體中文(正體中文)社區中最常用的電腦漢字字符集標準。詳細:是一套雙字節字符集,使用了雙八碼存儲方法,以兩個字節來安放一個字。第一個字節稱爲"高位字節",第二個字節稱爲"低位字節"。"高位字節"使用了0x81-0xFE,"低位字節"使用了0x40-0x7E,及0xA1-0xFE。1.3、Unicode字符集
說明:Unicode編碼系統爲表達任意語言的任意字符而設計。它使用4字節的數字來表達每個字母、符號,或者表意文字(ideograph)。每個數字代表唯一的至少在某種語言中使用的符號。1.3.1、UTF-32編碼方案
說明:使用4字節的數字來表達每個字母、符號,或者表意文字(ideograph),每個數字代表唯一的至少在某種語言中使用的符號的編碼方案。優點:可以在常數時間內定位字符串裏的第N個字符,因爲第N個字符從第4×Nth個字節開始。
缺點:就空間而言,是非常沒有效率的。
1.3.2、UTF-16編碼方案
說明:Unicode編碼系統爲表達任意語言的任意字符而設計。它使用4字節的數字來表達每個字母、符號,或者表意文字。優點:它在空間效率上比UTF-32高兩倍,因爲每個字符只需要2個字節來存儲(除去65535範圍以外的),而不是UTF-32中的4個字節。並且,如果我們假設某個字符串不包含任何星芒層中的字符,那麼我們依然可以在常數時間內找到其中的第N個字符,直到它不成立爲止這總是一個不錯的推斷。
1.3.3、UTF-8編碼方案
說明:一種針對Unicode的可變長度字符編碼(定長碼),也是一種前綴碼。詳細:UTF-8使用一至四個字節爲每個字符編碼: 128個US-ASCII字符只需一個字節編碼(Unicode範圍由U+0000至U+007F)。 帶有附加符號的拉丁文、希臘文、西裏爾字母、亞美尼亞語、希伯來文、阿拉伯文、敘利亞文及它拿字母則需要二個字節編碼(Unicode範圍由U+0080至U+07FF)。 其他基本多文種平面(BMP)中的字符(這包含了大部分常用字)使用三個字節編碼。其他極少使用的Unicode輔助平面的字符使用四字節編碼。
優點:UTF-8是ASCII的一個超集。因爲一個純ASCII字符串也是一個合法的UTF-8字符串,所以現存的ASCII文本不需要轉換。爲傳統的擴展ASCII字符集設計的軟件通常可以不經修改或很少修改就能與UTF-8一起使用。使用標準的面向字節的排序例程對UTF-8排序將產生與基於Unicode代碼點排序相同的結果。(儘管這隻有有限的有用性,因爲在任何特定語言或文化下都不太可能有仍可接受的文字排列順序。)UTF-8和UTF-16都是可擴展標記語言文檔的標準編碼。所有其它編碼都必須通過顯式或文本聲明來指定。任何面向字節的字符串搜索算法都可以用於UTF-8的數據(只要輸入僅由完整的UTF-8字符組成)。但是,對於包含字符記數的正則表達式或其它結構必須小心。UTF-8字符串可以由一個簡單的算法可靠地識別出來。就是,一個字符串在任何其它編碼中表現爲合法的UTF-8的可能性很低,並隨字符串長度增長而減小。舉例說,字符值C0,C1,F5至FF從來沒有出現。爲了更好的可靠性,可以使用正則表達式來統計非法過長和替代值(可以查看W3 FAQ: Multilingual Forms上的驗證UTF-8字符串的正則表達式)。
缺點:因爲每個字符使用不同數量的字節編碼,所以尋找串中第N個字符是一個O(N)複雜度的操作 即,串越長,則需要更多的時間來定位特定的字符。同時,還需要位變換來把字符編碼成字節,把字節解碼成字符。
2、字符串
2.1、string
2.2、basic_string
2.3、wstring
2.4、tstring
2.5、TCHAR、char、wchar_t(字符)
2.6、LPTSTR、LPSTR、LPWSTR(字符串)
2.7、BSTR、_bstr_t、CComBSTR
wstring unicode字符串
tstring 兼容Ansi和unicode
CString mfc字符串類 MFC對兼容unicode的封裝
_bstr_t com字符串 多用在c++ 的實現和使用,既有MFC也有標準C++包含comdef.h OLEAUT32.LIB OLEAUT32.dll
CComBSTR Atl字符串 多用在atl 的組件實現和使用方面,包含atlbase.h atl.lib atl.dll