青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
數據加載中……

VC/C++的中文字符處理方式

怎樣把漢字轉換成整數,又怎樣把該整數還原成漢字

char * str="漢字";BYTE *pstr=(BYTE*)str;BYTE B=pstr[i];B 就是整數

一 引入問題

代碼 wchar_t a[3]=L”中國,編譯時出錯,出錯信息為:數組越界。但wchar_t 是一個寬字節類型,數組a的大小應為6個字節,而兩個漢字的的unicode碼占4個字節,再加上一個結束符,最多6個字節,所以應該不會越界。

難道是編譯器出問題了?

二 解決引入問題所需的知識

   主要需兩方面的知識,第一個為字符尤其是漢字的編碼,以及語言和工具的支持情況,第二個是vc/c++MutiByte Charater Set Wide Character Set有關內存分配的情況。

三 漢字的編碼方式及在vc/c++中的處理

1.漢字編碼方式的介紹

對英文字符的處理,7ASCII碼字符集中的字符即可滿足使用需求,且英文字符在計算機上的輸入及輸出也非常簡單,因此,英文字符的輸入、存儲、內部處理和輸出都可以只用同一個編碼(如ASCII碼)。

而漢字是一種象形文字,字數極多(現代漢字中僅常用字就有六、七千個,總字數高達5萬個以上),且字形復雜,每一個漢字都有"音、形、義"三要素,同音字、異體字也很多,這些都給漢字的的計算機處理帶來了很大的困難。要在計算機中處理漢字,必須解決以下幾個問題:首先是漢字的輸入,即如何把結構復雜的方塊漢字輸入到計算機中去,這是漢字處理的關鍵;其次,漢字在計算機內如何表示和存儲?如何與西文兼容?最后,如何將漢字的處理結果從計算機內輸出?

為此,必須將漢字代碼化,即對漢字進行編碼。對應于上述漢字處理過程中的輸入、內部處理及輸出這三個主要環節,每一個漢字的編碼都包括輸入碼、交換碼、內部碼和字形碼。在計算機的漢字信息處理系統中,處理漢字時要進行如下的代碼轉換:輸入碼→交換碼→內部碼→字形碼。

(1)輸入碼: 作用是,利用它和現有的標準西文鍵盤結合來輸入漢字。輸入碼也稱為外碼。主要歸為四類:

a)      數字編碼:數字編碼是用等長的數字串為漢字逐一編號,以這個編號作為漢字的輸入碼。例如,區位碼、電報碼等都屬于數字編碼。

b)      拼音碼:拼音碼是以漢字的讀音為基礎的輸入辦法。

c)      字形碼:字形碼是以漢字的字形結構為基礎的輸入編碼。例如,五筆字型碼(王碼)。

d)      音形碼:音形碼是兼顧漢字的讀音和字形的輸入編碼。

(2)交換碼:用于漢字外碼和內部碼的交換。交換碼的國家標準代號為GB2312-80

(3)內部碼:內部碼是漢字在計算機內的基本表示形式,是計算機對漢字進行識別、存儲、處理和傳輸所用的編碼。內部碼也是雙字節編碼,將國標碼兩個字節的最高位都置為"1",即轉換成漢字的內部碼。

(4)字形碼:字形碼是表示漢字字形信息(漢字的結構、形狀、筆劃等)的編碼,用來實現計算機對漢字的輸出(顯示、打印)。

2.VC中漢字的編碼方式

   vc/c++正是采用了GB2312內部碼作為漢字的編碼方式,因此vc/c++中的各種輸入輸出方法,如cin/wcin,cout/wcout,scanf/wsanf,printf/wprintf...都是基于GB2312的,如果漢字的內碼不是這種編碼方式,那么利用上述各種方法就不會正確的解析漢字。

仔細觀察ASCII字符表,從第161個字符開始,后面的字符并不經常為用戶所使用,負值也未使用。GB2312編碼方式充分利用這一特性,將161-255-95~-1)之間的數值空間作為漢字的標識碼。既然255-161 = 94不能滿足漢字容量的要求,就將每兩個字符并在一塊(即一個漢字占兩個字節),顯然,94* 94 =8836基本上已經滿足了常用漢字個數的要求。計算機處理字符時,當連續處理到兩個大與160(-95~-1)的字節時,就認為這兩個字節存放了一個漢字字符。可以用下面的Demo程序來模擬vc/c++中輸出漢字字符的過程。

    unsigned char input[50];

cin>>input;

    int flag=0;

    for(int i =0 ;i < 50 ;i++)

    {

       if(input[i] > 0xa0 && input[i] != 0)

       {

           if(flag == 1)

           {

              cout<<"chinese character"<<endl;

              flag = 0;

           }

           else

           {

              flag++;

           }

       }

 

       else if(input[i] == 0)

       {

           break;

       }

       else

       {

           cout<<"english character"<<endl;

       }

}

輸入:Hello中國 (中國對應的GB2312內碼為:214 208185 250

輸出:english character

english character

english character

english character

english character

chinese character

chinese character

vc/c++中的英文字符仍然采用ASCII編碼方式。可以設想,其他國家程序員利用vc/c++編寫程序輸入本國字符時,vc/c++則會采用該國的字符編碼方式來處理這些字符。

    問題又產生了,韓國的vc/c++程序在中國的vc/c++上運行時,如果沒有相應的內碼庫,則對韓語字符的顯示有可能出現亂碼。我個人猜測,vc安裝程序中應該帶有不同國家的內碼庫,這樣一來肯定會占用很大的空間。如果所有的國家使用統一的編碼方式,且所有的程序設計語言和開發工具都支持這種編碼方式該多好!而現實中,確實已經有這種編碼方式了,且許多新的語言也都支持這種編碼方式,如JavaC#等,它就是下面的Unicode編碼

3.新的內碼標準---Unicode

Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。它為每種語言中的每個字符設定了統一并且唯一的二進制編碼,以滿足跨語言、跨平臺進行文本轉換、處理的要求。1990年開始研發,1994年正式公布。隨著計算機工作能力的增強,Unicode也在面世以來的十多年里得到普及。最新版本的 Unicode 2005年3月31推出的Unicode 4.1.0 。另外,5.0 Beta已于20051212推出,以供各會員評價。

Unicode 編碼系統可分為編碼方式和實現方式兩個層次。

編碼方式:Unicode 的編碼方式與 ISO 10646 的通用字符集(Universal Character SetUCS)概念相對應,目前的用于實用的 Unicode 版本對應于 UCS-2,使用16位的編碼空間。也就是每個字符占用2個字節。這樣理論上一共最多可以表示 216 個字符。基本滿足各種語言的使用。實際上目前版本的 Unicode 尚未填充滿這16位編碼,保留了大量空間作為特殊使用或將來擴展。

實現方式:Unicode 的實現方式不同于編碼方式。一個字符的 Unicode 編碼是確定的。但是在實際傳輸過程中,由于不同系統平臺的設計不一定一致,以及出于節省空間的目的,對 Unicode 編碼的實現方式有所不同。Unicode 的實現方式稱為Unicode轉換格式(Unicode Translation Format,簡稱為 UTF)。如,UTF-8 編碼,這是一種變長編碼,它將基本7ASCII字符仍用7位編碼表示,占用一個字節(首位補0)。而遇到與其他 Unicode 字符混合的情況,將按一定算法轉換,每個字符使用1-3個字節編碼,并利用首位為01進行識別。

JavaC#語言都是采用Unicode編碼方式,在這兩種語言中定義一個字符,在內存中存放的就是這個字符的兩字節Unicode碼。如下所示:

char a='';    => 內存中存放的Unicode碼為:25105

posted on 2008-11-07 22:39 肥仔 閱讀(1051) 評論(0)  編輯 收藏 引用 所屬分類: 字符編碼

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            麻豆精品传媒视频| 亚洲黄色免费电影| 国产一区二区三区久久悠悠色av | 久久都是精品| 久久久www| 久久这里有精品视频| 毛片基地黄久久久久久天堂| 欧美+亚洲+精品+三区| 欧美黄污视频| 99国内精品久久久久久久软件| 日韩写真在线| 亚洲一区亚洲二区| 久久精品国产久精国产思思| 久久综合中文字幕| 欧美日韩1区| 国产午夜精品理论片a级探花| 国产亚洲高清视频| 亚洲精选视频免费看| 亚洲欧美激情视频在线观看一区二区三区| 亚洲欧美怡红院| 欧美大片一区二区三区| 亚洲免费观看在线观看| 亚洲欧美美女| 欧美大片网址| 国产视频精品免费播放| 久久精品电影| 欧美巨乳在线| 黄色欧美日韩| 亚洲综合精品四区| 欧美本精品男人aⅴ天堂| 9人人澡人人爽人人精品| 久久精品国产99精品国产亚洲性色 | 久久免费视频在线| 亚洲精品在线看| 久久久精品网| 国产精品午夜电影| 宅男精品导航| 亚洲高清激情| 久久久99爱| 国产私拍一区| 亚洲欧美日韩国产中文| 亚洲人精品午夜在线观看| 久久久久久欧美| 国产欧美日韩激情| 亚洲欧美国产高清| 日韩一区二区久久| 欧美激情视频给我| 亚洲破处大片| 欧美高清视频一区| 久久美女艺术照精彩视频福利播放| 国产精品久久久久一区二区| 夜夜嗨av一区二区三区免费区| 欧美国产日韩亚洲一区| 久久久久国产一区二区三区四区| 国产精品一区二区三区观看| 亚洲欧美偷拍卡通变态| 在线一区亚洲| 国产精品免费网站在线观看| 亚洲欧美国产高清| 亚洲一区不卡| 国产日韩欧美制服另类| 香蕉久久夜色| 午夜在线一区二区| 国产午夜精品视频| 久久久91精品国产一区二区三区| 亚久久调教视频| 很黄很黄激情成人| 欧美阿v一级看视频| 欧美成人国产va精品日本一级| 亚洲国产网站| 亚洲精品午夜| 国产精品视屏| 巨乳诱惑日韩免费av| 噜噜噜噜噜久久久久久91 | 欧美风情在线观看| 99精品视频一区| 一区二区三区免费观看| 欧美在线视频一区二区三区| 国产一区二区日韩精品| 久久亚裔精品欧美| 欧美福利视频在线| 亚洲一区二区三区影院| 香港成人在线视频| 亚洲欧洲一区二区三区在线观看| 亚洲日本免费电影| 国产精品一区二区三区四区五区 | 久久久久九九九| 久久一二三国产| 亚洲视频在线观看三级| 亚洲免费影视| 亚洲激情小视频| 中文一区字幕| 亚洲成人在线| 亚洲婷婷在线| 亚洲国产精品ⅴa在线观看| 日韩视频在线观看一区二区| 国产欧美日韩高清| 亚洲国内高清视频| 国产视频精品xxxx| 亚洲精品一品区二品区三品区| 国产精品永久在线| 亚洲欧洲久久| 在线观看亚洲精品| 午夜精品成人在线| 一区二区三区不卡视频在线观看| 欧美中文字幕第一页| 99视频有精品| 久久亚洲免费| 久久精品亚洲精品国产欧美kt∨| 欧美精品国产精品| 免费中文日韩| 国产一区二区精品| 一区二区三区成人| 日韩视频在线观看一区二区| 久久精品一区二区三区中文字幕| 在线一区亚洲| 欧美大片va欧美在线播放| 久久资源av| 国产一区二区av| 亚洲免费视频一区二区| 亚洲一区国产精品| 欧美日韩高清区| 亚洲第一区在线| 亚洲成人资源网| 久久久久久久国产| 久久视频在线视频| 国产一区二区观看| 午夜精品久久久久久99热软件| 亚洲永久免费观看| 欧美性生交xxxxx久久久| 亚洲精品久久久久久久久久久久| 最新69国产成人精品视频免费| 久久精品视频在线播放| 久久人人爽人人爽| 黄色成人在线免费| 久久亚洲美女| 亚洲成色www久久网站| 亚洲国产专区校园欧美| 麻豆精品传媒视频| 亚洲片区在线| 亚洲视频每日更新| 国产精品久久久久久久久久直播| 国产精品99久久久久久白浆小说| 国产精品伊人日日| 亚洲欧美日韩一区| 久久日韩精品| 亚洲激情校园春色| 欧美精品一区二区高清在线观看| 亚洲人体一区| 亚洲欧美日韩精品综合在线观看 | 亚洲日韩第九十九页| 久色成人在线| 亚洲精品美女久久7777777| 一本到12不卡视频在线dvd| 欧美日韩一区二区视频在线| 亚洲一区在线看| 麻豆freexxxx性91精品| 91久久精品国产91久久| 欧美成人一区在线| 一区二区精品在线| 久久婷婷国产综合国色天香| 最新成人av网站| 国产精品九九| 久久久午夜精品| 亚洲免费高清| 久久久福利视频| 亚洲精品自在久久| 国产精品一区视频网站| 久久婷婷丁香| 亚洲天堂av在线免费| 免费在线一区二区| 亚洲欧美日韩国产另类专区| 尤物精品国产第一福利三区| 欧美日韩一区在线| 久久福利电影| 一区二区三欧美| 蜜臀a∨国产成人精品| 亚洲视屏一区| 亚洲成人在线网站| 国产精品视频自拍| 欧美裸体一区二区三区| 久久精品麻豆| 亚洲一区免费在线观看| 亚洲国产日韩精品| 久久艳片www.17c.com| 在线亚洲电影| 亚洲精品日韩激情在线电影| 国产精品―色哟哟| 欧美日韩黄色大片| 麻豆亚洲精品| 欧美在线免费播放| 亚洲综合色在线| 一本一道久久综合狠狠老精东影业| 毛片基地黄久久久久久天堂| 欧美一区二区三区四区在线观看| 亚洲视频网在线直播| 亚洲免费电影在线| 亚洲国产综合在线| 在线成人性视频| 好看的亚洲午夜视频在线|