黑马程序员技术交流社区

标题: utf-8与gbk编码解码的问题 [打印本页]

作者: wdtdcm    时间: 2014-4-7 17:03
标题: utf-8与gbk编码解码的问题
  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. }
复制代码








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

作者: ╰つ    时间: 2014-4-7 17:29
您用什么编码的,就用什么解码,这样才不会出现解码的不一致,比如:
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但是佛你不
作者: osully    时间: 2014-4-7 17:35
理论上编码解码就是这样做

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

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

怎么好像你的技术分一下子多这么多了?
前几天好像没有过百的啊?:o
作者: linweiwen    时间: 2014-4-7 18:23
楼主,感谢你让我又找到一个遗漏的知识点。
其实我也不太清楚,就是跟你探讨一下。

  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?
如果不是那就好复杂了,我参考了一下其它资料,
看得头晕脑胀的。







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