日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java编码问题详解

發布時間:2025/3/12 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java编码问题详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
import java.io.UnsupportedEncodingException; import java.util.Arrays;/*編碼: 字符變成字節數組解碼: 字節數組變成字符串String --> byte[] : str.getBytes()byte[] --> String : new String(byte[])*/public class EncodeDemo {public static void main(String[] args) throws UnsupportedEncodingException {/*示例一:用相同的字符集編碼和解碼(UTF-8)*/String str = "你好";byte[] bytes = str.getBytes("UTF-8"); // 用UTF-8字符集將“你好”轉換成字節數組System.out.println(Arrays.toString(bytes)); // 打印編碼后的字節數組: [-28, -67, -96, -27, -91, -67]str = new String(bytes, "UTF-8"); // 用UTF-8字符集將字節數組轉換成字符串System.out.println(str); // 你好/*示例二:用UTF-8編碼,用UTF-8編碼,再用ISO8859-1(拉丁字符集)解碼,再用ISO8859-1編碼,最后用UTF-8解碼,可以再轉換成相應的中文。注:ISO8859-1沒有中文字符集,會將中文字符轉換成不能識別的字符,然后可以再通過編碼轉換成原來的字節數組,再經過UTF-8解碼成原有的中文。*/bytes = str.getBytes("UTF-8"); // 用UTF-8字符集將“你好”轉換成字節數組System.out.println(Arrays.toString(bytes)); // [-28, -67, -96, -27, -91, -67]str = new String(bytes, "ISO8859-1"); // ISO8859-1字符集會將一個字節轉換為一個漢字,但由于此字符集中沒有中文,所以會出現亂碼的情況System.out.println(str); // 打印結果:?? ?¥?bytes = str.getBytes("ISO8859-1"); // 再將轉換后的亂碼重新編碼,此時又會得到原來的字節數組str = new String(bytes, "UTF-8"); // 再經UTF-8解碼以后,又會得到原來的漢字System.out.println(str); // 打印:你好/*示例三:用GBK編碼,用UTF-8解碼兩種字符集都有漢字編碼但是GBK字符集一個漢字會轉換成兩個字節,而UTF-8字符集有可能是一個,有可能是兩個,也有可能是三個那么,UTF-8是怎么確定該字符是由一個字節還是兩個或者三個字節來組成的呢?它會根據字節數組的標頭來判斷:(轉換成二進制后)'\u0001' 到 '\u007F' 范圍內的所有字符都是用單個字節表示的:即第一個字節以0開頭,那么該字符由一個字節組成null 字符 '\u0000' 以及從 '\u0080' 到 '\u07FF' 的范圍內的字符用兩個字節表示:即第一個字節以110開頭,且下一個二進制數以10開頭,那么該字符由兩個字節組成'\u0800' 到 '\uFFFF' 范圍內的 char 值用三個字節表示:即第一個字節以111開頭,且后兩個字節以10開頭,那么該字符由三個字節組成*/bytes = str.getBytes("GBK"); // GBK的漢字編碼將一個字符轉換為兩個字節: [-60, -29, -70, -61]System.out.println(Arrays.toString(bytes)); // [-60, -29, -70, -61]str = new String(bytes, "UTF-8");System.out.println(str); // 打印結果:���// 注:再將錯誤的字符用UTF-8編碼后,并不能再得到原來的數組,因為在最初的解碼時,UTF-8字符集會用一個相似的字符去代替不能正確解碼的字符,// 所以再用UTF-8編碼時并不能再得到原來的字節數組,繼而用原有的字符集解碼不能再得到原來的漢字bytes = str.getBytes("UTF-8");System.out.println(Arrays.toString(bytes)); // 打印:[-17, -65, -67, -17, -65, -67, -17, -65, -67]str = new String(bytes, "GBK");System.out.println(str); // 打印: 錕斤拷錕�} }

總結

以上是生活随笔為你收集整理的java编码问题详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。