站内搜索: 请输入搜索关键词

当前页面: 开发资料首页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


看看


好好学习天天向上


↑返回目录
前一篇: 关于Number的想法
后一篇: JAVA下如何判断一个数是不是整数?