当前页面: 开发资料首页 → J2SE 专题 → 哪位大侠帮我解释一下结果是怎么来的
哪位大侠帮我解释一下结果是怎么来的
摘要: 哪位大侠帮我解释一下结果是怎么来的
测试程序1:
import java.io.UnsupportedEncodingException;
//汉字汉字
public class UTF8 {
public static void main(String args[]) {
String a = "中文";
byte[] b ;
try {
b = a.getBytes();
for (int i = 0; i < b.length; i++) {
System.out.println(getHexString(b[i]));
}
System.out.println("**********************************0END/n");
b = a.getBytes("gbk");
for (int i = 0; i < b.length; i++) {
System.out.println(getHexString(b[i]));
}
System.out.println("**********************************1END/n");
b = a.getBytes("unicode");
for (int i = 0; i < b.length; i++) {
System.out.println(getHexString(b[i]));
}
System.out.println("**********************************2END/n");
b = a.getBytes("utf-8");
for (int i = 0; i < b.length; i++) {
System.out.println(getHexString(b[i]));
}
System.out.println("**********************************3END/n");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
/**
* 返回16进制
* @param b
* @return
*/
public static String getHexString(byte b) {
byte x = 0x0f;
String res = "";
byte h = (byte) (x & b>>4);
byte l = (byte) (x & b);
switch (h) {
case 10: res+="A";
break;
case 11: res+="B";
break;
case 12: res+="C";
break;
case 13: res+="D";
break;
case 14: res+="E";
break;
case 15: res+="F";
break;
default: res+=h;
break;
}
switch (l) {
case 10: res+="A";
break;
case 11: res+="B";
break;
case 12: res+="C";
break;
case 13: res+="D";
break;
case 14: res+="E";
break;
case 15: res+="F";
break;
default: res+=l;
break;
}
return res;
}
}
测试结果
<一>保存为utf-8
Window(GBK,utf-8结果一样)
(1) D6 D0CE C4
(2) D6 D0CE C4
(3) FF FE2D 4E87 65
(4) E4 B8AD E696 87
Linux(latin1)(*.java文件传输上去,然后在Linux下编译)
(1) E4 B8AD E696 87
(2) (无信息)
(3) FF FEE4 00B8 00
(4) C3 A4C2 B8C2 ADC3 A6C2 96C2 87
Linux(latin1)(*.class文件传输上去)
(1) 3F 3F
(2) D6 D0
(3) FF FE
(4) E4 B8AD E6
<二>保存为gbk
Linux(latin1)(*.java文件传输上去,然后在Linux下编译)
(1) D6 D0CE C4
(2)
(3) FF FED6 00
(4) C3 96C3 90C3 8EC3 84
Linux(latin1)(*.class文件传输上去)
3F 3F
D6 D0
FF FE
E4 B8AD E6
能不能解释一下为什么打印出这样的不同结果
’中文’GB2312编码是"d6d0 cec4",Unicode编码为"4e2d 6587",UTF编码就是"e4b8ad e69687"
不同的编码,显示的内容应该是不同啊.
我想知道java中是怎么这样转换的编码的
http://blog.csdn.net/zyb3514/archive/2006/04/04/650286.aspx
看看
好好学习天天向上