<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 45, 文章 - 6, 評論 - 4, 引用 - 0
    數(shù)據(jù)加載中……

    字符編碼詳解(ascii,utf-8,unicode,gbk,gb2312,iso8859-1等)

    1. ASCII
    我們需要了解的最早編碼是ASCII碼。它用7個二進制位來表示,由于那個時期生產(chǎn)的大多數(shù)計算機使用8位大小的字節(jié),因此用戶不僅可以存放所有可能的 ASCII字符,而且有整整一位空余下來。如果你技藝高超,可以將該位用做自己離奇的目的:WordStar中那個發(fā)暗的燈泡實際上設(shè)置這個高位,以指示 一個單詞中的最后一個字母,同時這也宣示了WordStar只能用于英語文本。
    由于字節(jié)有多達8位的空間,因此許多人在想:“呀!我們可以把128~255之間的編碼用做個人的應用目的。”問題在于,同時產(chǎn)生這種想法的人相當 多,而且在128~255之間的各個位置上應該存放什么這一問題上,真是仁者見仁智者見智。事實上,只要人們開始在美國以外的地方購買計算機,那么各種各 樣的不同OEM字符集都會進入規(guī)劃設(shè)計行列,并且各人都會根據(jù)自己的需要使用高位的128個字符。如此一來,甚至在同語種的文檔之間就不容易實現(xiàn)互換。 ASCII可被擴展,最優(yōu)秀的擴展方案是ISO 8859-1,通常稱之為Latin-1。Latin-1包括了足夠的附加字符集來寫基本的西歐語言。
    最后,這個人人參與的OEM終于以ANSI標準的形式形成文件。在ANSI標準中,每個人都認同如何使用低端的128個編碼,這與ASCII相當一致。不過,根據(jù)所在國籍的不同,處理編碼128以上的字符有許多不同的方式。這些不同的系統(tǒng)稱為代碼頁。
    同時,甚至更為令人頭疼的事情正在逐步上演,亞洲國家的字符表有成千上萬個字符,這樣的字符表是用8位二進制無法表示的。該問題的解決通常有賴于稱為DBCS(double byte character set,雙字節(jié)字符集)的繁雜字符系統(tǒng)。
    不過,仍然需要指出一點,多數(shù)人還是姑且認為一個字節(jié)就是一個字符,以及一個字符就是8個二進制位,并且只要確保不將字符串從一臺計算機移植到另一臺 計算機,或者說一種以上的語言,那么這幾乎總是可以湊合。當然,只要一進入Internet,從一臺計算機向另一臺計算機移植字符串就成為家常便飯了,而 各種復雜狀況也隨之呈現(xiàn)出來。令人欣慰的是,Unicode隨即問世了。

    2.iso8859-1

    屬于單字節(jié)編碼,最多能表示的字符范圍是0-255,應用于英文系列。比如,字母'a'的編碼為0x61=97。

    很明顯,iso8859-1編碼表示的字符范圍很窄,無法表示中文字符。但是,由于是單字節(jié)編碼,和計算機最基礎(chǔ)的表示單位一致,所以很多時候,仍 舊使用iso8859-1編碼來表示。而且在很多協(xié)議上,默認使用該編碼。比如,雖然"中文"兩個字不存在iso8859-1編碼,以gb2312編碼為 例,應該是"d6d0 cec4"兩個字符,使用iso8859-1編碼的時候則將它拆開為4個字節(jié)來表示:"d6 d0 ce c4"(事實上,在進行存儲的時候,也是以字節(jié)為單位處理的)。而如果是UTF編碼,則是6個字節(jié)"e4 b8 ad e6 96 87"。很明顯,這種表示方法還需要以另一種編碼為基礎(chǔ)。

    3. GB碼

    全稱是GB2312-80《信息交換用漢字編碼字符集基本集》,1980年發(fā)布,是中文信息處理的國家標準,在大陸及海外使用簡體中文的地區(qū)(如新 加坡等)是強制使用的唯一中文編碼。P-Windows3.2和蘋果OS就是以GB2312為基本漢字編碼, Windows 95/98則以GBK為基本漢字編碼、但兼容支持GB2312。
    雙字節(jié)編碼
    范圍:A1A1~FEFE
    A1-A9:符號區(qū),包含682個符號
    B0-F7:漢字區(qū),包含6763個漢字

    4.GB2312

    GB2312(1980年)一共收錄了7445個字符,包括6763個漢字和682個其它符號。漢字區(qū)的內(nèi)碼范圍高字節(jié)從B0-F7,低字節(jié)從 A1-FE,占用的碼位是72*94=6768。其中有5個空位是D7FA-D7FE。GB2312-80中共收錄了7545個字符,用兩個字節(jié)編碼一個 字符。每個字符最高位為0。GB2312-80編碼簡稱國標碼。

      GB2312支持的漢字太少。1995年的漢字擴展規(guī)范GBK1.0收錄了21886個符號,它分為漢字區(qū)和圖形符號區(qū)。漢字區(qū)包括21003個字符。

    5. GB12345-90

    1990年制定了繁體字的編碼標準GB12345-90《信息交換用漢字編碼字符集第一輔助集》,目的在于規(guī)范必須使用繁體字的各種場合,以及古籍 整理等。該標準共收錄6866個漢字(比GB2312多103個字,其它廠商的字庫大多不包括這些字),純繁體的字大概有2200余個。
    雙字節(jié)編碼
    范圍:A1A1~FEFE
    A1-A9:符號區(qū),增加豎排符號
    B0-F9:漢字區(qū),包含6866個漢字

    6.GBK

    GBK編碼(Chinese Internal Code Specification)是中國大陸制訂的、等同于UCS的新的中文編碼擴展國家標準。gbk編碼能夠用來同時表示繁體字和簡體字,而gb2312只 能表示簡體字,gbk是兼容gb2312編碼的。GBK工作小組于1995年10月,同年12月完成GBK規(guī)范。該編碼標準兼容GB2312,共收錄漢字 21003個、符號883個,并提供1894個造字碼位,簡、繁體字融于一庫。Windows95/98簡體中文版的字庫表層編碼就采用的是GBK,通過 GBK與UCS之間一一對應的碼表與底層字庫聯(lián)系。
    英文名:Chinese Internal Code Specification
    中文名:漢字內(nèi)碼擴展規(guī)范1.0版
    雙字節(jié)編碼,GB2312-80的擴充,在碼位上和GB2312-80兼容
    范圍:8140~FEFE(剔除xx7F)共23940個碼位
    包含21003個漢字,包含了ISO/IEC 10646-1中的全部中日韓漢字

    7. BIG5編碼

    是目前臺灣、香港地區(qū)普遍使用的一種繁體漢字的編碼標準,包括440個符號,一級漢字5401個、二級漢字7652個,共計13060個漢字。 BIG5又稱大五碼或五大碼,1984年由臺灣財團法人信息工業(yè)策進會和五間軟件公司宏碁 (Acer)、神通 (MiTAC)、佳佳、零壹 (Zero One)、大眾 (FIC)創(chuàng)立,故稱大五碼。Big5碼的產(chǎn)生,是因為當時臺灣不同廠商各自推出不同的編碼,如倚天碼、IBM PS55、王安碼等,彼此不能兼容;另一方面,臺灣政府當時尚未推出官方的漢字編碼,而中國大陸的GB2312編碼亦未有收錄繁體中文字。

    Big5字符集共收錄13,053個中文字,該字符集在中國臺灣使用。耐人尋味的是該字符集重復地收錄了兩個相同的字:“兀”(0xA461及0xC94A)、“嗀”(0xDCD1及0xDDFC)。

    Big5碼使用了雙字節(jié)儲存方法,以兩個字節(jié)來編碼一個字。第一個字節(jié)稱為“高位字節(jié)”,第二個字節(jié)稱為“低位字節(jié)”。高位字節(jié)的編碼范圍0xA1-0xF9,低位字節(jié)的編碼范圍0x40-0x7E及0xA1-0xFE。

    盡管Big5碼內(nèi)包含一萬多個字符,但是沒有考慮社會上流通的人名、地名用字、方言用字、化學及生物科等用字,沒有包含日文平假名及片假字母。

    例如臺灣視“著”為“著”的異體字,故沒有收錄“著”字。康熙字典中的一些部首用字(如“亠”、“疒”、“辵”、“癶”等)、常見的人名用字(如“堃”、“煊”、“栢”、“喆”等) 也沒有收錄到Big5之中。

    8.UTF-8

    UTF:UCS Transformation Format.考慮到unicode編碼不兼容iso8859-1編碼,而且容易占用更多的空間:因為對于英文字母,unicode也需要兩個字節(jié)來表 示。所以unicode不便于傳輸和存儲。因此而產(chǎn)生了utf編碼,utf編碼兼容iso8859-1編碼,同時也可以用來表示所有語言的字符,不 過,utf編碼是不定長編碼,每一個字符的長度從1-6個字節(jié)不等。另外,utf編碼自帶簡單的校驗功能。一般來講,英文字母都是用一個字節(jié)表示,而漢字 使用三個字節(jié)。

    注意,雖然說utf是為了使用更少的空間而使用的,但那只是相對于unicode編碼來說,如果已經(jīng)知道是漢字,則使用GB2312/GBK無疑是 最節(jié)省的。不過另一方面,值得說明的是,雖然utf編碼對漢字使用3個字節(jié),但即使對于漢字網(wǎng)頁,utf編碼也會比unicode編碼節(jié)省,因為網(wǎng)頁中包 含了很多的英文字符。

    UTF8編碼后的大小是不一定,例如一個英文字母"a" 和 一個漢字 "好",編碼后占用的空間大小就不樣了,前者是一個字節(jié),后者是三個字節(jié)!編碼的方法是從低位到高位。黃色為標志位其它著色為了顯示其,編碼后的位置。

    9.Unicode

    Unicode字符集(簡稱為UCS),國際標準組織于1984年4月成立ISO/IEC JTC1/SC2/WG2工作組,針對各國文字、符號進行統(tǒng)一性編碼。1991年美國跨國公司成立Unicode Consortium,并于1991年10月與WG2達成協(xié)議,采用同一編碼字集。目前Unicode是采用16位編碼體系,其字符集內(nèi)容與 ISO10646的BMP(Basic Multilingual Plane)相同。Unicode于1992年6月通過DIS(Draf International Standard),目前版本V2.0于1996公布,內(nèi)容包含符號6811個,漢字20902個,韓文拼音11172個,造字區(qū)6400個,保留 20249個,共計65534個。Unicode編碼后的大小是一樣的.例如一個英文字母 "a" 和 一個漢字 "好",編碼后都是占用的空間大小是一樣的,都是兩個字節(jié)!

    Unicode可以用來表示所有語言的字符,而且是定長雙字節(jié)(也有四字節(jié)的)編碼,包括英文字母在內(nèi)。所以可以說它是不兼容iso8859-1編 碼的,也不兼容任何編碼。不過,相對于iso8859-1編碼來說,uniocode編碼只是在前面增加了一個0字節(jié),比如字母'a'為"00 61"。

    需要說明的是,定長編碼便于計算機處理(注意GB2312/GBK不是定長編碼),而unicode又可以用來表示所有字符,所以在很多軟件內(nèi)部是使用unicode編碼來處理的,比如java。

    posted on 2009-05-14 18:11 liyang 閱讀(1484) 評論(0)  編輯  收藏

    主站蜘蛛池模板: yy6080亚洲一级理论| 亚洲高清视频免费| 亚洲AV无码国产一区二区三区| 国产成人亚洲精品影院| 朝桐光亚洲专区在线中文字幕| 国产99精品一区二区三区免费| 美女内射无套日韩免费播放| 国产成人无码综合亚洲日韩| 亚洲日韩一区精品射精| 成人黄18免费视频| 久久青青草原亚洲av无码| 一级毛片在线免费视频| 24小时免费直播在线观看| 亚洲AV无码一区二区二三区入口 | 亚洲av无码兔费综合| 无码人妻丰满熟妇区免费| 久久综合亚洲鲁鲁五月天| 日韩大片免费观看视频播放| 青青草a免费线观a| 亚洲熟女乱色一区二区三区| 女人隐私秘视频黄www免费| 天天摸天天碰成人免费视频| 亚洲人成网7777777国产| 亚洲伦理一二三四| 日本久久久免费高清| 亚洲视频免费在线播放| 97在线观免费视频观看| 美女黄频免费网站| 久久亚洲免费视频| 色吊丝最新永久免费观看网站 | 在线观看亚洲免费| 亚洲第一成人在线| 免费一级毛片在线观看| 国产成人免费视频| 亚洲熟妇av午夜无码不卡| 在线看片v免费观看视频777| 色噜噜的亚洲男人的天堂| 亚洲国产精品乱码一区二区| 一个人看的www免费高清| 亚洲精品综合久久中文字幕| 免费欧洲毛片A级视频无风险|