奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

java語言

java及相關字符集編碼問題解析

時間:2024-06-05 09:40:45 java語言 我要投稿
  • 相關推薦

java及相關字符集編碼問題解析

  Java是一種可以撰寫跨平臺應用程序的面向對象的程序設計語言。下面,小編為大家搜索整理了java及相關字符集編碼問題解析,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!

  一、編碼基本知識:

  最早的編碼是iso8859-1,和ascii編碼相似。但為了方便表示各種各樣的語言,逐漸出現了很多標準編碼,重要的有如下幾個:

  1. iso8859-1

  屬于單字節編碼,最多能表示的字符范圍是0-255,應用于英文系列。比如,字母a的編碼為0x61=97。

  很明顯,iso8859-1編碼表示的字符范圍很窄,無法表示中文字符。但是,由于是單字節編碼,和計算機最基礎的表示單位一致,所以很多時候,仍舊使用iso8859-1編碼來表示。而且在很多協議上,默認使用該編碼。比如,雖然"中文"兩個字不存在iso8859-1編碼,以gb2312編碼為例,應該是"d6d0 cec4"兩個字符,使用iso8859-1編碼的時候則將它拆開為4個字節來表示:"d6 d0 ce c4"(事實上,在進行存儲的時候,也是以字節為單位處理的)。而如果是UTF編碼,則是6個字節"e4 b8 ad e6 96 87"。很明顯,這種表示方法還需要以另一種編碼為基礎。

  2. GB2312/GBK

  這就是漢子的國標碼,專門用來表示漢字,是雙字節編碼,而英文字母和iso8859-1一致(兼容iso8859-1編碼)。其中gbk編碼能夠用來同時表示繁體字和簡體字,而gb2312只能表示簡體字,gbk是兼容gb2312編碼的。

  3. unicode

  這是最統一的編碼,可以用來表示所有語言的字符,而且是定長雙字節(也有四字節的)編碼,包括英文字母在內。所以可以說它是不兼容iso8859-1編碼的,也不兼容任何編碼。不過,相對于iso8859-1編碼來說,uniocode編碼只是在前面增加了一個0字節,比如字母a為"00 61"。

  需要說明的是,定長編碼便于計算機處理(注意GB2312/GBK不是定長編碼),而unicode又可以用來表示所有字符,所以在很多軟件內部是使用unicode編碼來處理的,比如java。

  4. UTF

  考慮到unicode編碼不兼容iso8859-1編碼,而且容易占用更多的空間:因為對于英文字母,unicode也需要兩個字節來表示。所以unicode不便于傳輸和存儲。因此而產生了utf編碼,utf編碼兼容iso8859-1編碼,同時也可以用來表示所有語言的字符,不過,utf編碼是不定長編碼,每一個字符的長度從1-6個字節不等。另外,utf編碼自帶簡單的校驗功能。一般來講,英文字母都是用一個字節表示,而漢字使用三個字節。

  注意,雖然說utf是為了使用更少的空間而使用的,但那只是相對于unicode編碼來說,如果已經知道是漢字,則使用GB2312/GBK無疑是最節省的。不過另一方面,值得說明的是,雖然utf編碼對漢字使用3個字節,但即使對于漢字網頁,utf編碼也會比unicode編碼節省,因為網頁中包含了很多的英文字符。[next]

  二、java對字符的處理

  在編寫java應用程序中,會有多處涉及到字符集編碼,有些地方需要進行正確的設置,有些地方需要進行一定程度的處理。

  1. getBytes(charset)

  這是java字符串處理的一個標準函數,其作用是將字符串所表示的字符按照charset編碼,并以字節方式表示。注意字符串在java內存中總是按unicode編碼存儲的。比如"中文",正常情況下(即沒有錯誤的時候)存儲為"4e2d 6587",如果charset為"gbk",則被編碼為"d6d0 cec4",然后返回字節"d6 d0 ce c4"。如果charset為"utf8"則最后是"e4 b8 ad e6 96 87"。如果是"iso8859-1",則由于無法編碼,最后返回 "3f 3f"(注: "3f 3f"是兩個問號)。

  2. new String(charset)

  這是java字符串處理的另一個標準函數,和上一個函數的作用相反,將字節數組按照charset編碼進行組合識別,最后轉換為unicode存儲。參考上述getBytes的例子,"gbk" 和"utf8"都可以得出正確的結果"4e2d 6587",但iso8859-1最后變成了"003f 003f"(兩個問號)。

  因為utf8可以用來表示/編碼所有字符,所以new String( str.getBytes( "utf8" ), "utf8" ) === str,即完全可逆。

  3. setCharacterEncoding()

  該函數用來設置http請求或者相應的編碼。

【java及相關字符集編碼問題解析】相關文章:

java語言源碼解析03-30

常見的Java問題與解答03-29

Java語言相關使用方法11-24

java讀取解析xml文件實例12-01

Java多線程問題總結11-27

Java 異步回調機制實例解析03-18

解析Java中volatile關鍵字04-03

ASCII編碼與Unicode編碼03-17

Java編程常見問題匯總12-04

主站蜘蛛池模板: 芷江| 临邑县| 壤塘县| 二连浩特市| 萝北县| 太原市| 大冶市| 康定县| 钦州市| 哈密市| 台北市| 濉溪县| 广宁县| 马山县| 龙陵县| 札达县| 资阳市| 千阳县| 江达县| 甘肃省| 湖北省| 松原市| 廊坊市| 黔南| 巴马| 云浮市| 罗江县| 德格县| 靖西县| 德阳市| 建平县| 房产| 尼木县| 揭西县| 宁波市| 津市市| 龙口市| 松阳县| 古交市| 桂平市| 巨鹿县|