如果一个中文文字用gbk编码成字节后,再用iso8859-1进行解码,则结果为:全是问号。让我奇怪的是虽然全是问号,但每个问号代表不同的字节。这使得可以用iso8859-1进行编码,然后用gbk解码出来原来信息.如果将iso8859-1换成utf-8,他出现的问号代表同一个值。所以我想问iso8859-1是怎么实现同样的问号代表不同的字节的???
————————————————————————————————————
public static void main(String[] args) throws UnsupportedEncodingException {
String s="你好";
byte []buf=s.getBytes("gbk");//用gbk编码,获得字节数组
printbit(buf);//打印数组
System.out.println();
String str=new String(buf,"iso8859-1");//解码
System.out.println(str);//解码错误,打印未知字符?
byte []bufs=str.getBytes("iso8859-1");//编码,获得原始字节数组
String str1=new String(bufs,"gbk");//解码,获得原始信息“你好”
System.out.println(str1);
//printbit(buf);
}
运行结果:
-60 -29 -70 -61
????//这里的问号代表不同的字节值
你好
———————————————————————————— |