A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wdtdcm 中级黑马   /  2014-4-7 17:03  /  1240 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.*;
  2. class EncodeDemo{
  3.         public static void main(String[] args)throws Exception{
  4.                 String s="但是佛你不";
  5.                 byte[] b1=s.getBytes("GBK");
  6.                 sop(Arrays.toString(b1));
  7.                 String s1=new String(b1,"UTF-8");
  8.                 sop("s1"+s1);
  9.                 byte[] b2=s1.getBytes("UTF-8");
  10.                 sop(Arrays.toString(b2));
  11.                 String s2=new String(b2,"GBK");
  12.                 sop("s2"+s2);
  13.         }
  14.         public static void sop(Object o){
  15.                 System.out.println(o);
  16.         }
  17. }
复制代码








代码应该都对了,怎么会出现这种结果呢?

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 神马都是浮云

查看全部评分

5 个回复

倒序浏览
您用什么编码的,就用什么解码,这样才不会出现解码的不一致,比如:
String s="但是佛你不";
                byte[] b1=s.getBytes("UTF-8");
               
                sop(Arrays.toString(b1));
                String s1=new String(b1,"UTF-8");
                sop("s1"+s1);
结果就是:
[-28, -67, -122, -26, -104, -81, -28, -67, -101, -28, -67, -96, -28, -72, -115]
s1但是佛你不
回复 使用道具 举报
理论上编码解码就是这样做

毕老师说  是因为两个都支持中文导致的.....换个不支持中文的码表就ok.......再具体点貌似也没说清楚
回复 使用道具 举报
osully 发表于 2014-4-7 17:35
理论上编码解码就是这样做

毕老师说  是因为两个都支持中文导致的.....换个不支持中文的码表就ok.......再 ...

怎么好像你的技术分一下子多这么多了?
前几天好像没有过百的啊?:o

点评

哥 你观察的真牛 还好吧 之前一直保持每天都回答些 版主加分也勤快 我还感觉最近貌似版主还加的少了 ....  发表于 2014-4-7 18:02
回复 使用道具 举报
楼主,感谢你让我又找到一个遗漏的知识点。
其实我也不太清楚,就是跟你探讨一下。

  1. package com.itheima;

  2. import java.nio.charset.Charset;
  3. import java.util.*;

  4. class EncodeDemo {
  5.         public static void main(String[] args) throws Exception {

  6.                 String s = "但是佛你不";
  7.                 System.out.println("默认:" + Charset.defaultCharset());
  8.                 byte[] b1 = s.getBytes("UTF-8");
  9.                 String s1 = new String(b1, "UTF-8");
  10.                 sop("s1 : " + s1);
  11.         }

  12.         public static void sop(Object o) {
  13.                 System.out.println(o);
  14.         }
  15. }
复制代码
我的Eclipse默认就是GBK编码的,
s刚开始是GBK编码,
然后b1是UTF-8编码,
然后s1就是用UTF-8解码出来。

这样算不算你问题的初衷呢?GBK转码到UTF-8?
如果不是那就好复杂了,我参考了一下其它资料,
看得头晕脑胀的。


评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马