亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

字符集相關(guān)知識的簡單總結(jié)

系統(tǒng) 1651 0

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

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

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

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

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

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

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

也是一種字符集/字符編碼方法, 它統(tǒng)一用唯一的字符集來包含這個星球上多數(shù)語言的書寫系統(tǒng).UCS向ASCII兼容(即前128個字符是一致的),但并不兼容DBCS,因?yàn)槠渌址赨CS中被重新編碼(重新安排位置).

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

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

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

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

UTF-16和UTF-32需要有字節(jié)序標(biāo)志 BOM (FEFF) 解決大端小端問題 .UTF-8 沒有字節(jié)序的問題 (因?yàn)橐?個字節(jié)為單元).

?

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

其他注意點(diǎn):

DBCS準(zhǔn)確說,應(yīng)該是MBCS(Multi-Byte Chactacter System,?多字節(jié)字符系統(tǒng)).

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

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

?

參考:

談?wù)刄nicode編碼,簡要解釋UCS、UTF、BMP、BOM等名詞

關(guān)于unicode,mbcs,utf8,charset,encoding等相關(guān)概念的說明

Unicode?Frequently Asked Questions

字符集編碼問題

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

字符集相關(guān)知識的簡單總結(jié)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 四虎影视免费永久在线观看黄 | 欧美精品一区二区三区在线 | 国产精品欧美一区二区 | 欧美日韩亚洲一区二区 | 九九热精品在线观看 | 日韩中文字幕久久精品 | 欧美毛片又粗又长又大 | 日本爱爱视频网站 | 亚洲国产综合视频 | 国产高清在线精品一区免费97 | 日韩高清欧美 | 在线成人tv天堂中文字幕 | 黄色影院在线观看视频 | 日本一二三区视频 | 久久久久视频精品网 | 亚洲国产一区在线 | 精品久久中文网址 | 国产一区二 | 福利网站在线观看 | 亚洲精品久久久久影院 | 国产日韩精品视频一区二区三区 | 国产色综合久久无码有码 | 四虎永久在线精品国产免费 | 国内精品视频一区二区八戒 | 日韩二区三区 | 久久成人免费视频 | 高清中文字幕视频在线播 | 日韩成人三级 | 欧美一级在线毛片免费观看 | 韩国理论片在线看2828dy | 免费a一级毛片在线播放 | 欧美国产亚洲18 | 中国一级毛片欧美一级毛片 | 视频在线一区二区三区 | 四虎影视网站 | 亚洲精品国产综合久久一线 | 青青影院一区二区免费视频 | 第一国内永久免费福利视频 | 国产精品伊人 | 国产区综合另类亚洲欧美 | 国产精品亚洲第一区广西莫菁 |