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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fufeng 中级黑马   /  2014-4-29 23:52  /  880 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class  EncodeDemo
  2. {
  3.         public static void main(String[] args) throws Exception
  4.         {
  5.                 String s = "你好";

  6.                 byte[] b1 = s.getBytes();
  7.                
  8.                 System.out.println(Arrays.toString(b1));

  9.                 System.out.println(new String(b1,"UTF-8"));
  10.         }
  11. }
复制代码

该程序是用默认GBK编码“你好”,得到的数组中有四个字节,然后用UTF-8解码,按道理说,会出现
两个??,但是运行后的结果为什么是???,三的问号

2 个回复

倒序浏览
我觉得那四个字节找不到对应字符时,就去“未知字符区”找了,至于“?”的个数就不确定了..依那个“区”对照后的结果而定。你看String s = "哈哈"时,还出现四个“?”呢,数量不确定。
纯属个人理解。
回复 使用道具 举报 1 0
GBK编码是一次性读取的三个字节,UTF-8一次读取两个字节,于是就出现了,GBK的两个字,如果换成UTF-8读取的话会显示三个字符的情况
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马