首先我使用的開發環境是Eclipse.創建一個java PRoject默認的編碼則為GBK,如圖:

下面便是具體代碼:
1 import java.io.UnsupportedEncodingException; 2 3 public class Demo1 { 4 public static void main(String[] args) throws UnsupportedEncodingException { 5 String s = "我愛ABC"; 6 byte[] bytes1 = s.getBytes("gbk");//不寫編碼,則使用平臺的默認字符集將此 String 編碼為 byte序列,并返回byte[]. 7 //s.getBytes(Charset charset) 使用給定的charset將此String編碼到byte序列; 8 //返回的是一個byte[]字節數組 9 10 for(byte b: bytes1){11 System.out.print(Integer.toHexString(b&0xff)+" ");12 //Integer.toHexString(int i)以十六進制(基數 16)無符號整數形式返回一個整數參數的字符串表示形式13 }14 //gbk編碼中文占有兩個字節,英文占有一個字節15 System.out.println();16 byte[] bytes2 = s.getBytes("utf-8");17 for(byte b: bytes2){18 System.out.print(Integer.toHexString(b&0xff)+" ");19 }20 //utf-8編碼 中文占有三個字節,英文占有一個字節21 System.out.println();22 //java是雙字節編碼 --->utf-16be >> 中文和英文都占有兩個字節23 byte[] bytes3 = s.getBytes("utf-16be");24 for(byte b: bytes3){25 System.out.print(Integer.toHexString(b&0xff)+" ");26 }27 28 /*當你的字節序列是某種編碼時,這個時候想把字節序列變成29 *字符串,也需要用這種編碼方式,否則會出現亂碼30 * */31 System.out.println();32 String str1 = new String(bytes3);//用項目默認的編碼即(GBK編碼) ----->> bytes3在上面定義成“utf-16be”的編碼了,所以會出現亂碼33 System.out.println(str1);34 System.out.println();35 36 String str2 = new String(bytes3,"utf-16be");37 System.out.println(str2);38 39 /*40 * 文本文件就是字節序列41 * 可以是任意編碼的字節序列42 * 如果我們在中文機器上直接創建文本文件,那么該文本文件只認識ansi編碼43 * 44 */ 45 }46 }打印的結果:

總的來說,編碼必須對應,不然會出現亂碼。
新聞熱點
疑難解答