网页编码格式
?? 以前一直對utf、unicode、ascII還有GBK編碼方式不太了解,只知道如果有中文的話一般用utf-8或GBK存儲,今天正好又接觸到了這個問題就google了下。????
? ASCII是用來表示英文的一種編碼規范,表示的最大字符數為256個,每個字符占1個字節。如果只用來表示英文應該是綽綽有余了,可是還要表示中文、阿拉伯文所以就有很大的不足了,于是就產生了GB2312。很多人應該對這個比較了解,很多國內網頁指定的編碼都是GB2312的,它其實是對ASCII的一種擴展,是每個國家自己制定的編碼規范,比如一個中文字符是由兩個擴展ASCII字符表示。
? 但因為GB2312是國家標準所以會有一些問題,記得我們小時候玩一些繁體游戲時需要借助一些南極星之類的軟件轉換編碼嗎?因為臺灣很多用的都是big5編碼,它和GB2312的編碼格式還是類似的,會顯示出一些奇怪的文字或是偶爾也會有個別漢字。后來因為GB2312所包含的漢字太少了,所以又擴展出來GBK編碼。
? GBK包括了大部分的漢字,并且還加入了big5中幾乎所有的繁體字體(但big5和GBK中的繁體字體并不兼容)。之后還有GB18030編碼,其實主要還是字符集的變化。
? ASCII—GB2312—GBK—GB18030他們都是向下兼容的,區分英文編碼和中文編碼的方法是高字節的最高位不為0,其實GB中文編碼都是雙字節字符集。因為GB編碼都是國家標準,所以如果要解決中文問題不能從擴展ASCII角度入手了,于是出現了unicode和utf。
? unicode分為UCS-2、UCS-4,目前常用的是UCS-2是用2個字節為字符編碼,可以表示的數為2^16=65535,基本可以表示歐美和大部分亞洲漢字,并且因為UCS-2是雙字節的所以每個漢字或英文都是由1個unicode構成,那拆字和統計字數比ASCII方便了很多。似乎unicode是比較完美了,可是它卻有一個很致命的缺點,就是并不能和ASCII兼容。ASCII字符是單個字節的,比如"A"的ASCII是65。而Unicode是雙字節的,比如"A"的Unicode是0065,這就造成了一個非常大的問題:以前處理ASCII的那套機制不能被用來處理Unicode了 。另一個更加嚴重的問題是,C語言使用'\0'作為字符串結尾,而Unicode里恰恰有很多字符都有一個字節為0,這樣一來,C語言的字符串函數將無法正常處理Unicode,除非把世界上所有用C寫的程序以及他們所用的函數庫全部換掉 。
? 于是出現了utf,它是將Unicode編碼規則和計算機的實際編碼對應起來的一個規則?,F在流行的UTF有2種:UTF-8和UTF-16。UTF-8是以8位為單元對UCS進行編碼,它定義了一種"區間規則",這種規則可以和ASCII編碼保持最大程度的兼容
轉自http://hi.baidu.com/47370/blog/item/3e59773484d590b0d0a2d319.html
轉載于:https://www.cnblogs.com/HellenTian/archive/2011/10/20/2218644.html
總結
- 上一篇: SQL Express自动备份
- 下一篇: 交换网络中的sniffer讨论-基于交换