資源描述:
《編碼與字符集總結(jié)課件.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、編碼與字符集殷坤2015年7月16日ASCII編碼:計(jì)算機(jī)中存放的都是0和1的二進(jìn)制值。8個(gè)位對(duì)應(yīng)一個(gè)字節(jié),常用16進(jìn)制來表示而我們普通用戶所希望看到的是,計(jì)算機(jī)把其所存儲(chǔ)的對(duì)應(yīng)的16進(jìn)制的數(shù)值,轉(zhuǎn)化為對(duì)應(yīng)的字符,包括英文和中文等其他語言的字符,然后輸出到屏幕上美國國家標(biāo)準(zhǔn)學(xué)會(huì)(AmericanNationalStandardInstitute,ANSI)制定的,標(biāo)準(zhǔn)的單字節(jié)字符編碼方案,主要用于顯示現(xiàn)代英語和其他西歐語言ASCII字符集共2^7=128個(gè)字符=33個(gè)控制字符+95個(gè)可見字符這點(diǎn)數(shù)量的字符也就懂英語的可以用!!!!字符集和編碼
2、方式的多樣化字符集描述ISO-8859-1支持部分歐洲使用的語言,編碼范圍:0x00-0xFF,0x00-0x7F與ASCII一樣,0x80-0x9F之間是控制字符,0xA0-0xFF之間是文字符號(hào)GB2312共收入簡體漢字6763個(gè)和非漢字圖形字符682個(gè),漢字區(qū)域,高位為0xB0-0xF7,低位為0xA1-0xFE,整個(gè)字符集分成94個(gè)區(qū),每區(qū)有94個(gè)位。每個(gè)區(qū)位上只有一個(gè)字符GBKGBK向下與GB2312編碼兼容,增加了14000多字,采用雙字節(jié)表示,總體編碼范圍為8140-FEFE,首字節(jié)在81-FE之間,尾字節(jié)在40-FE之間Uni
3、codeUnicode是國際組織制定的可以容納世界上所有文字和符號(hào)的字符編碼方案,Unicode用數(shù)字0-0x10FFFF來映射這些字符,最多可以容納1114112個(gè)字符UTF-8(編碼)是一種針對(duì)Unicode的可變長度字符編碼,又稱萬國碼,一個(gè)字節(jié)跟ASCII一樣,其他的每個(gè)字節(jié)由一個(gè)換碼序列開始,第一個(gè)字節(jié)由唯一的換碼序列,由n位連續(xù)的1加一位0組成,首字節(jié)連續(xù)的1的個(gè)數(shù)表示字符編碼所需的字節(jié)數(shù)隨著計(jì)算機(jī)在全世界的廣泛使用,字符的顯示要考慮加入其他國家的語言文字JAVA的字符串處理編碼:1.byte[]getBytes():使用系統(tǒng)默認(rèn)
4、的字符集編碼成byte數(shù)組2.byte[]getBytes(Stringcharset):使用給定的charset字符集編碼成byte數(shù)組解碼:1.String(byte[]bytes):使用系統(tǒng)默認(rèn)的字符集解碼指定的byte數(shù)組,并構(gòu)建新的字符串2.String(byte[]bytes,Stringcharset):使用指定的字符集解碼并創(chuàng)建新的字符串Unicode與UTF-8的轉(zhuǎn)換Unicode編碼(十六進(jìn)制)UTF-8字節(jié)流(二進(jìn)制)00000000-0000007F0xxxxxxx00000080-000007FF110xxxxx10
5、xxxxxx00000800-0000FFFF1110xxxx10xxxxxx10xxxxxx00010000-001FFFFF11110xxx10xxxxxx10xxxxxx10xxxxxx00200000-03FFFFFF111110xx10xxxxxx10xxxxxx10xxxxxx10xxxxxx04000000-7FFFFFFF1111110x10xxxxxx10xxxxxx10xxxxxx10xxxxxx10xxxxxx“漢”字的Unicode編碼是0x6C49。0x6C49在0x0800-0xFFFF之間,使用用3字節(jié)模板了:1
6、110xxxx10xxxxxx10xxxxxx。將0x6C49寫成二進(jìn)制是:0110110001001001,用這個(gè)比特流依次代替模板中的x,得到:111001101011000110001001,即E6B189GBK、GB2312轉(zhuǎn)換為UTF-8GBK是一種字符集,UTF-8是基于Unicode的編碼方式,所以核心問題就是GBK與Unicode的轉(zhuǎn)化問題。既然是兩個(gè)字符集的轉(zhuǎn)換問題,那么自己去查表吧!HTTP協(xié)議的編碼HTTP協(xié)議總體分為HTTP頭和實(shí)體內(nèi)容(Get請(qǐng)求一般不需要),請(qǐng)求有請(qǐng)求行,響應(yīng)有狀態(tài)行。實(shí)體內(nèi)容的編碼一般由頭部的co
7、ntent-type決定而對(duì)于Get請(qǐng)求,都是把數(shù)據(jù)串聯(lián)在請(qǐng)求的url后面作為參數(shù),url拼接完成后,瀏覽器會(huì)對(duì)url進(jìn)行URIEncoder,然后發(fā)送給服務(wù)器。URLEncoder:英文字母不變,.*_-不變,空格字符變成+,其他字符先使用某個(gè)編碼機(jī)制然后每個(gè)字節(jié)用一個(gè)包含3個(gè)字符的字符串%xy表示,其中xy為該字節(jié)的兩位十六進(jìn)制表示形式Base64編碼Base64是網(wǎng)絡(luò)上最常見的用于傳輸8bit字節(jié)代碼的編碼方式之一,Base64編碼可用于在HTTP環(huán)境下傳遞較長的標(biāo)識(shí)信息,Base64也會(huì)經(jīng)常用作一個(gè)簡單的“加密”來保護(hù)某些數(shù)據(jù),而真正
8、的加密通常都比較繁瑣標(biāo)準(zhǔn)的Base64并不適合直接放在URL里傳輸,因?yàn)閁RL編碼器會(huì)把標(biāo)準(zhǔn)Base64中的“/”和“+”字符變?yōu)樾稳纭?XX”的形式,所以又有一種