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

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

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

    隨筆-61  評(píng)論-13  文章-19  trackbacks-0
    Unicode解決方案
    Unicode:寬字節(jié)字符集(摘自windows核心編程)

    UnicodeAppleXerox公司于1988年建立的一個(gè)技術(shù)標(biāo)準(zhǔn)。1991年,成立了一個(gè)集團(tuán)機(jī)構(gòu)負(fù)責(zé)Unicode的開(kāi)發(fā)和推廣應(yīng)用。該集團(tuán)由AppleCompaqIBMMicrosoftOracleSilicon ? Graphics, ? Inc.SybaseUnisysXerox等公司組成。該集團(tuán)負(fù)責(zé)維護(hù)Unicode標(biāo)準(zhǔn)。
    Unicode
    提供了一種簡(jiǎn)單而又一致的表示字符串的方法。Unicode字符串中的所有字符都是16位的(兩個(gè)字節(jié))。它沒(méi)有專門(mén)的字節(jié)來(lái)指明下一個(gè)字節(jié)是屬于同一個(gè)字符的組成部分,還是一個(gè)新字符。這意味著你只需要對(duì)指針進(jìn)行遞增或遞減,就可以遍歷字符串中的各個(gè)字符,不再需要調(diào)用CharNext之類的函數(shù)。由于Unicode用一個(gè)16位的值來(lái)表示每個(gè)字符,因此總共可以得到65000個(gè)字符,這樣,它就能夠?qū)κ澜绺鲊?guó)的書(shū)面文字中的所有字符進(jìn)行編碼,遠(yuǎn)遠(yuǎn)超過(guò)了單字節(jié)字符集的256個(gè)字符的數(shù)目。




    我們面臨的基本問(wèn)題是世界上的書(shū)寫(xiě)語(yǔ)言不能簡(jiǎn)單地用256個(gè)8位代碼表示。以前的解決方案包括代碼頁(yè)和DBCS已被證明是不能滿足需要的,而且也是笨拙的。那什么才是真正的解決方案呢?

    身為程序編寫(xiě)者,我們經(jīng)歷過(guò)這類問(wèn)題。如果事情太多,用8位數(shù)值已經(jīng)不能表示,那么我們就試更寬的值,例如16位值。而且這很有趣的,正是Unicode被制定的原因。與混亂的256個(gè)字符代碼映像,以及含有一些1字節(jié)代碼和一些2字節(jié)代碼的雙字節(jié)字符集不同,Unicode是統(tǒng)一的16位系統(tǒng),這樣就允許表示65,536個(gè)字符。這對(duì)表示所有字符及世界上使用象形文字的語(yǔ)言,包括一系列的數(shù)學(xué)、符號(hào)和貨幣單位符號(hào)的集合來(lái)說(shuō)是充裕的。

    明白Unicode和DBCS之間的區(qū)別很重要。Unicode使用(特別在C程序設(shè)計(jì)語(yǔ)言環(huán)境里)“寬字符集”。“Unicode中的每個(gè)字符都是16位寬而不是8位寬。”在Unicode中,沒(méi)有單單使用8位數(shù)值的意義存在。相比之下,在雙字節(jié)字符集中我們?nèi)匀惶幚?位數(shù)值。有些字節(jié)自身定義字符,而某些字節(jié)則顯示需要和另一個(gè)字節(jié)共同定義一個(gè)字符。

    處理DBCS字符串非常雜亂,但是處理Unicode文字則像處理有秩序的文字。您也許會(huì)高興地知道前128個(gè)Unicode字符(16位代碼從0x0000到0x007F)就是ASCII字符,而接下來(lái)的128個(gè)Unicode字符(代碼從0x0080到0x00FF)是ISO ? 8859-1對(duì)ASCII的擴(kuò)展。Unicode中不同部分的字符都同樣基于現(xiàn)有的標(biāo)準(zhǔn)。這是為了便于轉(zhuǎn)換。希臘字母表使用從0x0370到0x03FF的代碼,斯拉夫語(yǔ)使用從0x0400到0x04FF的代碼,美國(guó)使用從0x0530到0x058F的代碼,希伯來(lái)語(yǔ)使用從0x0590到0x05FF的代碼。中國(guó)、日本和韓國(guó)的象形文字(總稱為CJK)占用了從0x3000到0x9FFF的代碼。

    Unicode的最大好處是這里只有一個(gè)字符集,沒(méi)有一點(diǎn)含糊。Unicode實(shí)際上是個(gè)人計(jì)算機(jī)行業(yè)中幾乎每個(gè)重要公司共同合作的結(jié)果,并且它與ISO ? 10646-1標(biāo)準(zhǔn)中的代碼是一一對(duì)應(yīng)的。Unicode的重要參考文獻(xiàn)是《The ? Unicode ? Standard,Version ? 2.0》(Addison-Wesley出版社,1996年)。這是一本特別的書(shū),它以其它文件少有的方式顯示了世界上書(shū)寫(xiě)語(yǔ)言的豐富性和多樣性。此外,該書(shū)還提供了開(kāi)發(fā)Unicode的基本原理和細(xì)節(jié)。

    Unicode有缺點(diǎn)嗎?當(dāng)然有。Unicode字符串占用的內(nèi)存是ASCII字符串的兩倍。(然而壓縮文件有助于極大地減少文件所占的磁盤(pán)空間。)但也許最糟的缺點(diǎn)是:人們相對(duì)來(lái)說(shuō)還不習(xí)慣使用Unicode。身為程序編寫(xiě)者,這就是我們的工作

    posted on 2006-03-27 17:49 xnabx 閱讀(149) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲视频在线观看| 久艹视频在线免费观看| 亚洲欧洲日产专区| 国产亚洲一区二区三区在线| 永久免费毛片手机版在线看| 18禁网站免费无遮挡无码中文| 久久精品无码专区免费| 精品在线视频免费| 亚洲人配人种jizz| 亚洲福利一区二区精品秒拍| 久久亚洲精品视频| 亚洲熟妇无码乱子AV电影| 亚洲国产精品狼友中文久久久| 四虎成人免费观看在线网址| 很黄很色很刺激的视频免费| 131美女爱做免费毛片| 日本免费高清视频| 久久青青草原国产精品免费| 久久精品无码免费不卡| 二个人看的www免费视频| 一本久久A久久免费精品不卡| 污视频网站免费在线观看| 丰满亚洲大尺度无码无码专线| 亚洲精品色播一区二区| 亚洲日本天堂在线| 亚洲人成自拍网站在线观看| 亚洲AV成人无码天堂| 国产91在线|亚洲| 亚洲综合av一区二区三区| 亚洲色无码国产精品网站可下载| 亚洲AV综合色区无码二区偷拍| 国产.亚洲.欧洲在线| 亚洲免费福利在线视频| 亚洲人片在线观看天堂无码| 亚洲av永久无码精品秋霞电影秋 | 韩国亚洲伊人久久综合影院| 亚洲AV无码一区二区乱子仑| 精品特级一级毛片免费观看| 一级黄色免费毛片| 免费无码作爱视频| 84pao强力永久免费高清|