標籤:code strong 資料 os 類 表
一、字元編碼
字元集
1)字元集是字元的數字代碼集。有ANSI/ASCII、MBCS(Multibytes)、Unicode等。比如“漢”字Unicode代碼為0x6c49。
編碼方案
2)編碼方案是記錄字元代碼的方式。有UTF-8、UTF-16、GB2312等。編碼方案分“變長編碼”與“定長編碼”兩種。UTF-8是變長編碼(漢字有的兩位元組有的三位元組),而UTF-16是兩位元組定長的編碼。
字元集與編碼方案
3)字元集與編碼方案是配套的。如GB2312編碼,即是GB2312字元集與GB2312編碼方案。此處GB2312為兩位元組定長編碼。而提到的Unicode編碼,即指Unicode字元集與UTF-X編碼方案。其中UTF-16為兩位元組定長編碼,UTF-8設計為變長是為了應用中相容已有的ANSI/ASCII編碼,並廣泛應用於互連網業務。
Multibytes與Unicode
1)vc下,或者win32中,兩者之別等價於變長與定長編碼之分,或者說是採用非UTF-16還是UTF-16之分。
2)從winNT核心以來,win OS已全面更新為UTF-16編碼。
3)此處Unicode僅指Unicode字元集配UTF-16編碼。其餘,UTF-8、UTF-7、GB2312、ANSI/ASCII等一律劃歸Multibytes。故而Multibytes應理解為“變長”字元,而非“多”字元。
VS工程應用
工程屬性設定字元集為Multibytes或Unicode。這是用來切換winapi版本的,是用Ansi或Unicode版本。
二、ANSI字元和UNICODE字元與字串資料型別
1)在C中char類型表示一個8位ANSI字元。
如下表示:
char c = ‘A‘;//即在記憶體中佔用一個位元組的空間
2)wchar_t表示一個16位的Unicode(UTF-16)字元。
wchar_t c = L‘A‘;//在記憶體中佔用兩個位元組的空間