java 解決介面呼叫過程中的編碼問題
阿新 • • 發佈:2019-02-17
在網路傳輸中,資訊都是以位元組序列的方式傳輸的。所以,傳送方的String要按照某種編碼方式(如UTF-8,GBK)編碼為位元組序列,在網路中傳輸後,接收方取得這個位元組序列,按照相同的編碼方式將位元組序列解碼為String。
String name = "張三";//這裡預設是utf-8傳輸的
//傳輸過來的時候是什麼編碼格式這裡就用什麼編碼格式取,如果是瀏覽器發過來的那預設是iso-8859-1,其他看傳送方式什麼編碼格式傳送的。
byte[] b1 = name.getBytes("UTF-8");
//在轉換成utf-8的字串
String name1 = new String(b1, "UTF-8" ); //編碼解碼相同,正常顯示
System.out.println(name1);
String name2 = new String(b1, "GBK"); //編碼解碼不同,亂碼
System.out.println(name2);
byte[] b2 = name.getBytes("GBK");
String name3 = new String(b2, "GBK"); //編碼解碼相同,正常顯示
System.out.println(name3);
String name4 = new String(b2, "UTF-8"); //編碼解碼不同,亂碼
System.out.println(name4);