日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

字符集相關知識的簡單總結

系統 1931 0

咱花一個下午給自己歸納 下字符編碼知識= ?=,在腦子里理理順當~

ASCII : 早期的字符集,7位,128個字符,包括大小寫a-z字母,0-9數字以及一些控制字符.

  擴展ASCII :?1個字節8位,只用7位不合理.于是第8位用于擴展ASCII字符集,這樣就又多了128個字符.于是用著后128個字符來擴展表示如拉丁字母,希臘字母等特殊符號.但問題是歐洲那一票國家很多互相都擁有不相同的特殊字母,一起塞進后128個明顯不夠,于是代碼頁出現了.

  Code Page ( 代碼頁 ) : 1個字節前128個字符大家統一和ASCII一樣,而后128個字符,根據不同系統所謂 代碼頁 來區分各個語言不相同的字母和符號.

  DBCS ( 雙字節字符集 ) : 對于亞洲國家,后128個字符依然無法包含大量的象形文字,DBCS正是為此的一個解決方案.DBCS由 一個或兩個 字節表示一個字符,這說明DBCS并不一定是兩個字節,對于如英文字母,是向ASCII兼容的,依然由1個字節表示,而對于如中文則用2個字節表示.英 文和中文可以統一地處理,而區分是否為中文編碼的方法是2個字節中的高字節的首位為1,就必須檢查后面跟隨的那個字節,2個字節一起解釋為1個字符.GB2312,GBK到GB18030都屬于DBCS. 另外,簡體中文Windows下的ANSI編碼通常是指GBK(代碼頁936) .

DBCS很大問題在于字符串的 字符數 不能通過 字節數 來決定,如"中文abc", 字符數 是5,而 字節數 是7.對于用++或--運算符來遍歷字符串的程序員來說,這簡直就是夢魘!

  Unicode : 學名為 " Universal Multiple-Octet Coded Character Set ",簡稱" UCS ". UCS可以看作是"Unicode Character Set"的縮寫.

也是一種字符集/字符編碼方法, 它統一用唯一的字符集來包含這個星球上多數語言的書寫系統.UCS向ASCII兼容(即前128個字符是一致的),但并不兼容DBCS,因為其他字符在UCS中被重新編碼(重新安排位置).

UCS有 兩種格式: UCS-2 UCS-4 .前者用2個字節(16位)編碼,后者用4個字節( 實際上只用31位 )編碼.USC-4前2個字節都為0的部分稱為 BMP(基本多語言平面) ,就是說BMP去掉前2個零字節就是UCS-2. 目前的UCS-4規范中還沒有任何字符被分配在BMP之外. (說白了,USC-4就是為當16位的USC-2都被分配完時候做再做擴展用的,現在還沒用到)

UTF-8,UTF-16,UTF-32 : " Unicode transformation format"(UTF) ?,即Unicode的傳輸格式.Unicode規定了怎么編碼字符,而UTF規定怎么將一個Unicode字符單元映射到字節序來傳輸或保存.

UTF-16 UTF-32 分別表示以16位和32位為一個Unicode單元進行編碼, 其實UTF-16對應就是UCS-2,UTF-32 對應就是 UCS-4(UCS-2和UCS-4是陳舊的說法,應拋棄) [看這里] . ? 另外,通常說的Unicode就是指UTF-16.

UTF-8 是關鍵!如果統一Unicode都用2字節表示,英文字母覺得自己就很吃虧(高字節始終是0字節).UTF-8提供了一種靈活的解決辦法: 以單字節(8bit)作為編碼單元,變長多字節編碼方式 . 如ASCII字母繼續使用1字節儲存,中文漢字用3字節儲存,其他最多可直6字節. (具體格式看末尾參考文章> ?<懶)

UTF-16和UTF-32需要有字節序標志 BOM (FEFF) 解決大端小端問題 .UTF-8 沒有字節序的問題 (因為以1個字節為單元).

?

===============================================================================

其他注意點:

DBCS準確說,應該是MBCS(Multi-Byte Chactacter System,?多字節字符系統).

字符集(Charset)和編碼(Encoding)注意區別.如GBK,GB2312以及Unicode都既是字符集,也是編碼方式,而UTF-8只是編碼方式,并不是字符集.

Linux下The GUN C?Library(從 glibc 2.2開始 )中寬字符wchar_t是以32位的Unicode(USC-4)表示.如寬字符"中"字為 "0x00004e2d".而Windows下的CRT使用寬字符仍是16位的.

?

參考:

談談Unicode編碼,簡要解釋UCS、UTF、BMP、BOM等名詞

關于unicode,mbcs,utf8,charset,encoding等相關概念的說明

Unicode?Frequently Asked Questions

字符集編碼問題

(精)字符集GBK和UTF8的區別說明

字符集相關知識的簡單總結


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 丰台区| 凤庆县| 家居| 剑阁县| 马鞍山市| 延寿县| 三门峡市| 菏泽市| 平泉县| 邻水| 林周县| 永丰县| 和静县| 阿图什市| 漳浦县| 积石山| 虞城县| 甘德县| 改则县| 滦南县| 大同县| 缙云县| 原平市| 徐州市| 大英县| 龙州县| 绿春县| 英德市| 沙坪坝区| 濉溪县| 临沭县| 迁西县| 宁城县| 天峨县| 囊谦县| 寻甸| 乌鲁木齐市| 罗城| 疏勒县| 马公市| 博湖县|