PS,1880后程序員

          看不完的牙,寫不完的程序,跑不完的步。
          隨筆 - 97, 文章 - 34, 評論 - 10, 引用 - 0
          數據加載中……

          java zip 編碼

          真不好意思,號稱是國際化工程師,竟然連這個基本概念都混淆了。重新整理,一定要記住。

          Java則采用了平臺無關的UNICODE,Java從一個byte流中讀取一個字符串時,將把平臺相關的byte轉變為平臺無關的Unicode字符串。在輸出時Java將把Unicode字符串轉變為平臺相關的byte流,如果某個Unicode字 符在某個平臺上不存在,將會輸出一個'?'。

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

           java字符串處理:
          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"(兩個問號)。

            new String(charset)

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

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

          zip的編碼是utf-8編碼格式


          posted on 2010-09-15 16:41 amenglai 閱讀(287) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 奉新县| 民丰县| 合山市| 大新县| 修文县| 宁晋县| 莱西市| 蒙自县| 麻阳| 长寿区| 南靖县| 健康| 仙桃市| 屏东县| 赣州市| 龙泉市| 桓台县| 黄平县| 兴和县| 定兴县| 宁武县| 郓城县| 登封市| 铁岭市| 牙克石市| 黄大仙区| 长岛县| 泾川县| 金秀| 罗甸县| 棋牌| 雅江县| 观塘区| 山阳县| 淮滨县| 皮山县| 同德县| 满洲里市| 永修县| 湘潭县| 隆子县|