字符編碼編碼方案介紹_第1頁(yè)
字符編碼編碼方案介紹_第2頁(yè)
字符編碼編碼方案介紹_第3頁(yè)
字符編碼編碼方案介紹_第4頁(yè)
字符編碼編碼方案介紹_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、字符編碼NS:李幸 第一部分字符編碼方案介紹基本概念字符編碼空間(code space)和碼點(diǎn)(code point)編碼單元(code unit)單字節(jié)字符集、雙字節(jié)字符集、多字節(jié)字符集ASCII編碼空間ASCII:0 x00 x7F編碼單元: 8bit單字節(jié)字符集32個(gè)控制字符和94個(gè)可打印字符GB2312-80編碼空間94*94=8836雙字節(jié)編碼區(qū)位碼:94區(qū)94位,實(shí)際使用6763個(gè)編碼范圍 高字節(jié): 0 xB00 xF7 低字節(jié): 0 xA00 xFE問(wèn)題: 只包含常用漢字(e.g.”朱鎔基”)GB13000(GBK)編碼空間:23940字節(jié)范圍:?jiǎn)巫止?jié): 0 x00-0 x7F

2、雙字節(jié):高字節(jié):0 x810 xFE (0 x80 歐元符號(hào) ) 低字節(jié):0 x400 x7E 0 x800 xFE(剔除xx7F)低字節(jié)在0 x400 x7E的漢字都是一些生僻字符兼容GB2312,是GB2312的超集GB13000(GBK)GBK字集 共收入21886個(gè)漢字和圖形符號(hào),包括: GB2312 中的全部漢字、非漢字符號(hào)。 BIG5 中的全部漢字。 與 ISO-10646 相應(yīng)的國(guó)家標(biāo)準(zhǔn) GB13000 中的其它 CJK 漢字,以上合計(jì) 20902 個(gè)漢字。 其它漢字、部首、符號(hào),共計(jì) 984 個(gè)。 GB13000(GBK)GB13000(GBK)GBK 編碼區(qū)分三部分: 漢字區(qū)

3、:GBK/2:OXBOA1-F7FE, 收錄 GB2312 漢字 6763 個(gè) GBK/3:OX8140-AOFE,收錄 CJK 漢字 6080 個(gè)GBK/4:OXAA40-FEAO,收錄 CJK 漢字和增補(bǔ)的漢字 8160 個(gè) 圖形符號(hào)區(qū):GBK/1:OXA1A1-A9FE,GB2312 符號(hào)+增補(bǔ)其它符號(hào) GBK/5:OXA840-A9AO,擴(kuò)除非漢字區(qū) 用戶自定義區(qū) : 即 GBK 區(qū)域中的空白區(qū),用戶可以自己定義字符BIG-55家大公司的方案拼湊而成,故稱BIG5字節(jié)范圍:高字節(jié):0 xA1-0 xF9 低字節(jié):0 x40-0 x7E 0 xA1-0 xFEBIG5編碼嚴(yán)重問(wèn)題: 沒(méi)有

4、一個(gè)真正統(tǒng)一的漢字編碼表(1)BIG-5定義的13053個(gè)漢字太少?!坝五a堃”和“游錫方方土”(2)增補(bǔ)字集混亂:倚天Big5延伸、 Big5+、 Big-5E、 Big5-2003 (3)增補(bǔ)方案互不兼容低字節(jié)落在0 x400 x7E 0 x5B 0 x5C 0 x5D 有特殊含義OTICE:GBK,GB18030中低字節(jié)的一部分也落在0 x400 x7E,但都是些生僻字符被unicode取代是必然GB18030-20002000年推出的較新國(guó)家標(biāo)準(zhǔn)多字節(jié)字符集,編碼空間 160萬(wàn)單字節(jié):0 x00 x7F雙字節(jié):高字節(jié):0 x810 xFE 低字節(jié):0 x400 x7E 0 x800 xF

5、E(兼容GBK)四字節(jié):第1、3字節(jié):0X810XFE 第2、4字節(jié):0X300X39特點(diǎn):汲取了BIG5的教訓(xùn),2、4字節(jié)使用不容易引起岐義的值與gbk完全兼容,除了:歐元 ( ) GB18030 中 A2 E3, 在GBK中是0 x80在日文項(xiàng)目中的應(yīng)用: 前端顯示用utf8 后端存儲(chǔ)用gb18030UCS和UnicodeUCS(Universal Character Set)由ISO-10646定義,是國(guó)際標(biāo)準(zhǔn)Unicode是美國(guó)多語(yǔ)言軟件制造商組成的協(xié)會(huì)組織的 Unicode 項(xiàng)目Unicode2.0及以上版本,二者全面兼容,共同發(fā)展Unicode:字符編碼表;UTF:unicode傳

6、輸方案 UTF編碼方案UTF-32(1)Unicode碼點(diǎn)被直接表示為一個(gè)32位的編碼單元(2)浪費(fèi)嚴(yán)重UTF-16(1)U U+FFFF(BMP)一個(gè)16位編碼(2)U U+10FFFF 一對(duì)16位編碼,稱作代理對(duì)(surrogate pair)(3)代理高部:0 xD8000 xDBFF 代理低部:0 xDC000 xDFFF(4)編碼值大于U+10FFFF的字符將不能用UTF-16來(lái)表示UTF-8: 14個(gè)Byte來(lái)表示unicode.(1)1 byte : ascii (2)2 bytes: latin,希伯來(lái)文等等(3)3 bytes: CJK字符等等(4)4 bytes:其它Uni

7、code編碼方案(2)Unicode編碼方案(3)特點(diǎn)兼容7 位 ASCII 字符第一字節(jié)指明了該字符需要多什么位字節(jié)可以編入所有可能的 231個(gè) UCS 代碼 ,BMP字符最多需要3位字節(jié)UTF-8編碼特征明顯,可以有效防止某個(gè)字節(jié)被破壞而引起的雪崩效應(yīng)中日韓統(tǒng)一漢字CJK方案 東亞漢字統(tǒng)一,包括GBK、BIG5、韓文、日文、越南語(yǔ)用到的漢字。編碼范圍:U U+FFFF 實(shí)際只用到U+4E00U+9FA5Unihan.txt中日韓漢字字符表 /Public/UNIDATA/Unihan.zip實(shí)體字符什么是實(shí)體字符? 形如&#xxxx;原因: 1、html標(biāo)簽使用:像“”這類符號(hào)已經(jīng)用來(lái)表示

8、HTML標(biāo)簽,因此就不能直 接當(dāng)作文本中的符號(hào)來(lái)使用,為了在HTML文檔中使用這些符號(hào),就需要定義它的轉(zhuǎn)義字符串,解釋程序遇到這類字符串時(shí)就把它解釋為真實(shí)的字符。、字符在對(duì)應(yīng)字符集中沒(méi)有定義:需要使用轉(zhuǎn)義字符串來(lái)表示表示方法:1、語(yǔ)義表示法:(直觀、但非標(biāo)準(zhǔn)語(yǔ)法某些瀏覽器不支持) 2、編碼表示法:( MSXML解析不支持)第二部分編碼操作和函數(shù)庫(kù)編碼操作半個(gè)漢字的處理全半角轉(zhuǎn)換編碼識(shí)別最常用的編碼GBK、BIG5、UTF-8互轉(zhuǎn)瀏覽器傳輸編碼不同引發(fā)的問(wèn)題半個(gè)漢字的處理什么是”半個(gè)漢字“?產(chǎn)生原因:文末不適當(dāng)?shù)亟財(cái)嘁?,比如string buffer截?cái)嘀?造成影響:殘缺字節(jié)和相連的正常字節(jié)組

9、合成另外一個(gè)漢字,使得正常漢字被破壞,引起”雪崩”。雪崩結(jié)束條件:文檔結(jié)束/遇到ASCII字符/殘缺和正常字節(jié)不能構(gòu)成一個(gè)漢字半個(gè)漢字的處理(1)UTF-8編碼通過(guò)分析字節(jié)的標(biāo)志位,可以正確的忽略殘缺字節(jié)(2)GBK、BIG5:掃描字符串,當(dāng)?shù)谝粋€(gè)字符0 x80時(shí),向后走2個(gè)byte,否則走一個(gè)byte,去除文末不成對(duì)的0 x80字節(jié).NOTICE:baidu大多數(shù)產(chǎn)品線后臺(tái)存儲(chǔ)GBK,特別要注意半個(gè)漢字問(wèn)題全半角轉(zhuǎn)換什么是全角字符?(1)簡(jiǎn)單說(shuō),就是GB2312 ZONE1和ZONE3的中文字符(2)全角字符和ASCII碼有對(duì)應(yīng)關(guān)系。如GB0108”(” 對(duì)應(yīng)ASCII 0 x28 “(”(

10、3)GB2312 ZONE3還定義了全角的英文、數(shù)字(4)全角字符占2個(gè)字節(jié),在操作系統(tǒng)中有對(duì)應(yīng)的顯示字庫(kù)為什么要用全角字符?輸入漢字,理應(yīng)使用中文標(biāo)點(diǎn),數(shù)字和字母應(yīng)當(dāng)使用半角字符。否則文本不美觀。所以GB2312定義了全角字符百度全半角轉(zhuǎn)換庫(kù)(1)void ul_trans2bj(const char *szIn, char *szOut)將GB2312 ZONE3字符轉(zhuǎn)換為對(duì)應(yīng)的ASCII符。該區(qū)的字符和ASCII有固定的轉(zhuǎn)換公式,因此,轉(zhuǎn)換比較成功。(2)void ul_trans2bj_ext(const char *szIn, char *szOut)將GB2312 ZONE1字符轉(zhuǎn)

11、換為對(duì)應(yīng)的ASCII符。該區(qū)的字符和ASCII沒(méi)有固定的轉(zhuǎn)換公式,需要建立對(duì)照表。 NOTICE:使用時(shí)兩個(gè)函數(shù)都要調(diào)用才能保證完全轉(zhuǎn)換 。編碼識(shí)別基本原理(1)分析高字節(jié)和低字節(jié)的范圍,判斷屬于哪種已知編碼(2)特征串、詞頻、字頻統(tǒng)計(jì)等多種方式GBK、BIG5編碼重疊,導(dǎo)致識(shí)別不準(zhǔn) GBK、BIG5編碼重疊,相同的編碼值屬于不同的漢字。如:0 xB1A6在GBK中是“寶”,在BIG5中是“惘”UTF-8的識(shí)別率最高UTF-8特征明顯,理論上,識(shí)別最容易(?)BIG5GBK編碼轉(zhuǎn)換BIG5GBK有現(xiàn)成的BIG5:GBK對(duì)照表baidu編碼轉(zhuǎn)換庫(kù)(ullib下的ccode庫(kù))ul_gbk_gbi

12、_str(); / GBK轉(zhuǎn)換為GBIul_big5_gbi_str(); / BIG5轉(zhuǎn)換為GBIul_trans2gb; /BIG5或者gbk轉(zhuǎn)換為GBI GBI是擴(kuò)展后的GBK,將GBK中的繁體字轉(zhuǎn)換為對(duì)應(yīng)的簡(jiǎn)體字UTF8GBK編碼轉(zhuǎn)換 編碼對(duì)照表: baidu編碼轉(zhuǎn)換庫(kù)(/public/uconv)is_utf8:/是否是utf8編碼utf8_to_gbk:/utf8轉(zhuǎn)成gbkgbk_to_utf8 / gbk轉(zhuǎn)成utf8轉(zhuǎn)換策略:utf8unicodegbk UTF8GBK編碼轉(zhuǎn)換 Utf8-gbk轉(zhuǎn)換失?。?、沒(méi)有對(duì)應(yīng)GBK: 例如韓文:轉(zhuǎn)成實(shí)體utf8unicode� xXX

13、XX 問(wèn)題:對(duì)沒(méi)有對(duì)應(yīng)gbk的編碼都轉(zhuǎn)成實(shí)體會(huì)有問(wèn)題,例如:“圖片”。 CDBC C6AC 11001101 10111100 , 11000110 10101100,符合utf8標(biāo)準(zhǔn),實(shí)際上是gbk。 2、gbk和utf8編碼沖突: 1、2折中方案: 確定是utf8編碼的直接轉(zhuǎn)換,失敗轉(zhuǎn)實(shí)體。 不確定情況,判斷是否是utf8,both utf8&gbk,當(dāng)作gbk.(?) 支持參數(shù)控制。 3、碼表不存在: 少量特殊字符,補(bǔ)充碼表。 瀏覽器傳輸編碼不同引發(fā)的問(wèn)題(1)對(duì)url: 中國(guó).html?kw=中國(guó)不同瀏覽器傳輸url不同部分編碼如下:瀏覽器PATH部分參數(shù)部分ie(默認(rèn))中國(guó).html

14、kw=中國(guó)UTF-8編碼、無(wú)urlencodeGBK編碼、無(wú)urlencode Firefox(默認(rèn))%D6%D0%B9%FA.html kw=%D6%D0%B9%FAFirefox2.0: GBK編碼、urlencodeFirefox3.0: utf-8編碼、urlencodeGBK編碼、urlencode Webkit系( Operacrome等)%D6%D0%B9%FA.htmlkw=%D6%D0%B9%FAUTF-8編碼、urlencode UTF-8編碼、urlencode 瀏覽器傳輸編碼不同引發(fā)的問(wèn)題(2)貼吧支持吧名作為二級(jí)域名,支持如下形式url: 圖片問(wèn)題:貼吧吧名的完全開(kāi)放性。ie,firefox分別傳輸utf8,gbk編碼首先需要判別是否是utf8編碼:沖突?”圖片”:當(dāng)作gbk處理:圖片判斷正確.問(wèn)題:確實(shí)是utf8當(dāng)作了gbk,典型: ,例如,”mariasharapova”,會(huì)被認(rèn)為是 “maria路sharapova”。解決方案url中限制使用如下字符: 限制為:漢字,字母,數(shù)字,下劃線 字

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論