有三種編碼方式和三種字元型別。
第一種編碼方式是單位元組字符集,稱之為sbcs,它的所有字元都只有乙個位元組的長度。ascii碼就是sbcs。sbcs字串由乙個零位元組結尾。
第二種編碼方式是多位元組字符集,稱之為mbcs,它包含的字元中有單位元組長的字元,也有多位元組長的字元。windows用到的mbcs只有二種字元型別,單位元組字元和雙位元組字元。因此
windows中用得最多的字元是雙位元組字符集,即dbcs,通常用它來代替mbcs。
在dbcs編碼中,用一些保留值來指明該字元屬於雙位元組字元。例如,shift-jis(通用日語)編碼中,值0x81-0x9f 和 0xe0-0xfc 的意思是:「這是乙個雙位元組字元,下乙個位元組是這個字
符的一部分」。這樣的值通常稱為前導位元組(lead byte),總是大於0x7f。前導位元組後面是跟隨位元組(trail byte)。dbcs的跟隨位元組可以是任何非零值。與sbcs一樣,dbcs字串也由乙個零字
節結尾。
第三種編碼方式是unicode。 unicode編碼標準中的所有字元都是雙位元組長。有時也將unicode稱為寬字符集(wide characters),因為它的字元比單位元組字元更寬(使用更多記憶體)。注意,
unicode不是mbcs - 區別在於mbcs編碼中的字元長度是不同的。unicode字串用二個零位元組字元結尾(乙個寬字元的零值編碼)。
單位元組字符集是拉丁字母,重音文字,用ascii標準定義,用於dos作業系統。
雙位元組字符集用於東亞和中東語言。
unicode用於com和windows nt內部。
讀者都很熟悉單位元組字符集,它的資料型別是char。
雙位元組字符集也使用char資料型別(雙位元組字符集中的許多古怪處之一)。
unicode字符集用wchar_t資料型別。unicode字串用l字首起頭,如:
wchar_t wch = l'1'; // 2 個位元組, 0x0031
wchar_t* wsz = l"hello"; // 12 個位元組, 6 個寬字元
**頁(code page)是個古老的專業術語,據說是ibm公司首先使用的。**頁和字符集的含義基本相同,**頁規定了適用於特定地區的字元集合,和這些字元的編碼。可以將**頁理解
為字元和位元組資料的對映表。
windows為自己支援的**頁都編了乙個號碼。例如**頁936就是簡體中文 gbk,**頁950就是正體中文 big5。**頁的概念比較簡單,就是乙個字元編碼方案。但要說清楚windows的
ansi**頁,就要從windows的區域(locale)說起了。
轉換://將單位元組char*轉化為寬位元組wchar_t*
wchar_t* ansitounicode( const char* szstr )
wchar_t* presult = new wchar_t[nlen];
multibytetowidechar( cp_acp, mb_precomposed, szstr, -1, presult, nlen );
return presult;
}//將寬位元組wchar_t*轉化為單位元組char*
char* unicodetoansi( const wchar_t* szstr )
char* presult = new char[nlen];
widechartomultibyte( cp_acp, 0, szstr, -1, presult, nlen, null, null );
return presult;
}// utf-8轉unicode
wchar_t* utf8tounicode(const char* buf)
// unicode轉unt-8
char* unicodetoutf8(const wchar_t* buf)
字元編碼 ASCII Unicode UTF 8
ascii編碼 ascii american standard code for information interchange,美國資訊交換標準 它主要用於顯示現代英語和其他西歐語言。ascii至今為止共定義了128個字元,其中包括95個可顯示字元和33個無法顯示的控制字元 多數都已經廢除 在計算...
8 Python字元編碼
三 字元編碼的介紹 四 字元編碼的應用 2.1 三大核心硬體的回憶 1 軟體執行前,軟體的 及其相關資料都是存放於硬碟中的 2 任何軟體的啟動都是將資料從硬碟中讀入記憶體,然後cpu從記憶體中取出指令並執行 3 軟體執行過程中產生的資料最先都是存放於記憶體中的,若想永久儲存軟體產生的資料,則需要將資...
字元編碼之UTF 8
博學,切問,近思 詹子知 http blog.csdn.net zhiqiangzhan utf 8 8 位元 universal character set unicode transformation format 是一種針對unicode的可變長度字元編碼。utf 8 是一種傳輸編碼,他和定長...