java字符集編碼研究new

java字符集編碼研究new

ID:18609642

大?。?3.50 KB

頁數(shù):17頁

時間:2018-09-19

java字符集編碼研究new_第1頁
java字符集編碼研究new_第2頁
java字符集編碼研究new_第3頁
java字符集編碼研究new_第4頁
java字符集編碼研究new_第5頁
資源描述:

《java字符集編碼研究new》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。

1、1.概述本文主要包括以下幾個方面:編碼基本知識,java,系統(tǒng)軟件,url,工具軟件等。在下面的描述中,將以"中文"兩個字為例,經(jīng)查表可以知道其GB2312編碼是"d6d0cec4",Unicode編碼為"4e2d6587",UTF編碼就是"e4b8ade69687"。注意,這兩個字沒有iso8859-1編碼,但可以用iso8859-1編碼來"表示"。2.編碼基本知識最早的編碼是iso8859-1,和ascii編碼相似。但為了方便表示各種各樣的語言,逐漸出現(xiàn)了很多標準編碼,重要的有如下幾個。2.1.iso8859-1屬于單字節(jié)編碼,最多能表示的

2、字符范圍是0-255,應用于英文系列。比如,字母'a'的編碼為0x61=97。很明顯,iso8859-1編碼表示的字符范圍很窄,無法表示中文字符。但是,由于是單字節(jié)編碼,和計算機最基礎的表示單位一致,所以很多時候,仍舊使用iso8859-1編碼來表示。而且在很多協(xié)議上,默認使用該編碼。比如,雖然"中文"兩個字不存在iso8859-1編碼,以gb2312編碼為例,應該是"d6d0cec4"兩個字符,使用iso8859-1編碼的時候則將它拆開為4個字節(jié)來表示:"d6d0cec417"(事實上,在進行存儲的時候,也是以字節(jié)為單位處理的)。而如果是UT

3、F編碼,則是6個字節(jié)"e4b8ade69687"。很明顯,這種表示方法還需要以另一種編碼為基礎。2.2.GB2312/GBK這就是漢子的國標碼,專門用來表示漢字,是雙字節(jié)編碼,而英文字母和iso8859-1一致(兼容iso8859-1編碼)。其中gbk編碼能夠用來同時表示繁體字和簡體字,而gb2312只能表示簡體字,gbk是兼容gb2312編碼的。2.3.unicode這是最統(tǒng)一的編碼,可以用來表示所有語言的字符,而且是定長雙字節(jié)(也有四字節(jié)的)編碼,包括英文字母在內(nèi)。所以可以說它是不兼容iso8859-1編碼的,也不兼容任何編碼。不過,相對于

4、iso8859-1編碼來說,uniocode編碼只是在前面增加了一個0字節(jié),比如字母'a'為"0061"。需要說明的是,定長編碼便于計算機處理(注意GB2312/GBK不是定長編碼),而unicode又可以用來表示所有字符,所以在很多軟件內(nèi)部是使用unicode編碼來處理的,比如java。2.4.UTF17考慮到unicode編碼不兼容iso8859-1編碼,而且容易占用更多的空間:因為對于英文字母,unicode也需要兩個字節(jié)來表示。所以unicode不便于傳輸和存儲。因此而產(chǎn)生了utf編碼,utf編碼兼容iso8859-1編碼,同時也可以用

5、來表示所有語言的字符,不過,utf編碼是不定長編碼,每一個字符的長度從1-6個字節(jié)不等。另外,utf編碼自帶簡單的校驗功能。一般來講,英文字母都是用一個字節(jié)表示,而漢字使用三個字節(jié)。注意,雖然說utf是為了使用更少的空間而使用的,但那只是相對于unicode編碼來說,如果已經(jīng)知道是漢字,則使用GB2312/GBK無疑是最節(jié)省的。不過另一方面,值得說明的是,雖然utf編碼對漢字使用3個字節(jié),但即使對于漢字網(wǎng)頁,utf編碼也會比unicode編碼節(jié)省,因為網(wǎng)頁中包含了很多的英文字符。3.java對字符的處理在java應用軟件中,會有多處涉及到字符集

6、編碼,有些地方需要進行正確的設置,有些地方需要進行一定程度的處理。3.1.getBytes(charset)這是java字符串處理的一個標準函數(shù),其作用是將字符串所表示的字符按照charset編碼,并以字節(jié)方式表示。注意字符串在java內(nèi)存中總是按unicode編碼存儲的。比如"中文",正常情況下(即沒有錯誤的時候)存儲為"4e2d6587",如果charset為"gbk",則被編碼為"d6d0cec4",然后返回字節(jié)"d6d0cec4"。如果charset為"utf8"則最后是"e4b8ade69687"。如果是"iso8859-1",則由于

7、無法編碼,最后返回"3f3f"(兩個問號)。3.2.newString(charset)17這是java字符串處理的另一個標準函數(shù),和上一個函數(shù)的作用相反,將字節(jié)數(shù)組按照charset編碼進行組合識別,最后轉換為unicode存儲。參考上述getBytes的例子,"gbk"和"utf8"都可以得出正確的結果"4e2d6587",但iso8859-1最后變成了"003f003f"(兩個問號)。因為utf8可以用來表示/編碼所有字符,所以newString(str.getBytes("utf8"),"utf8")===str,即完全可逆。3.3.s

8、etCharacterEncoding()該函數(shù)用來設置http請求或者相應的編碼。對于request,是指提交內(nèi)容的編碼,指定后可以通過getPar

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。