一般而言,java編譯環境裏的默認編碼環境是gbk。而java被稱爲雙字節編碼,其一般通用的編碼是utf-16be。
在我們所寫的JAVA程序中,字符序列的生成和解讀必須按照同一種編碼方式,負責會出現錯誤的結果,即令人討厭的亂碼。下面我們來看一個程序:
import java.io.UnsupportedEncodingException;
public class Jbianma {
public static void main(String[] args) throws UnsupportedEncodingException{
String str1=new String("聯通ABC");
System.out.println(str1);
byte[] bytes=str1.getBytes("utf-8");
System.out.println();
for(byte e:bytes)
System.out.print(Integer.toHexString(e&0xff)+" ");
byte[] bytes1=str1.getBytes("gbk");
System.out.println();
for(byte e:bytes1)
System.out.print(Integer.toHexString(e&0xff)+" ");
System.out.println();
byte[] bytes2=str1.getBytes("utf-16be");
System.out.println();
for(byte e:bytes2)
System.out.print(Integer.toHexString(e&0xff)+" ");
System.out.println();
}
}
運行結果如下:
這些結果充分說明了:
utf-8編碼裏一箇中文字符佔三個字節,一個英文字符佔一個字節;
gbk編碼裏一箇中文字符佔兩個字節,一個英文字符佔一個字節;
utf=16be編碼裏無論中英文,都是一個字符對應兩個字節。