黑马程序员技术交流社区

标题: 编码解码问题 [打印本页]

作者: qmayuan    时间: 2013-8-3 11:23
标题: 编码解码问题
String s = "你好";
byte[] b1 =s.getBytes();  这个是编码;
System.out.pringln(Array.toString(bi));
.tostring 应该是解码么?为什么输出的是 【-28 -67 -96 -27 -91 -67】呢  解码不应该是输出String类型么?



作者: 肥猫    时间: 2013-8-3 11:25
本帖最后由 肥猫 于 2013-8-3 11:26 编辑

你在你的IDE上打中文就已经编码了.输出一串数字说明没解码成功,而且还是GBK
作者: 吴光新    时间: 2013-8-3 12:33
你这默认GBK编码,解码是new String(b1,"GBK"),手机打不方便,你直接打印这句话就应该解码了
作者: sergio    时间: 2013-8-3 14:36
我们可以看下JDK中对这两个方法的解释。 、
byte[] getBytes() : 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
String toString() :返回此对象本身(它已经是一个字符串!)。
所以返回值,就是这样的结果,你已经转换成了byte序列并存储到一个数组中,然后调用toString()方法返回对象本身。

作者: ☆今☆    时间: 2013-8-4 21:03
Array.toString(bi))只是将字节数组中的数字当成字符串进行返回,应该相当于""+b1[0]+....;所以输出的还是b1中存储的值.

作者: lijia113    时间: 2013-8-6 20:59
你把s转换成byte时就已经解码了,你的编译器使用的gbk编码,一个中文是三个字节,然后你把这个编码放入了一个数组,所以输出的结果就是这样啊





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2