思梓 2016-01-21 01:46 采纳率: 100%
浏览 1492
已采纳

对getBytes()的一点疑问

我输入的程序是这样的

                byte d[]="你我他".getBytes();
                byte b[]="hahaha".getBytes();
          System.out.println("数组d的长度是(一个汉字占两个字节):"+d.length+"个字节");
          String s=new String(d,0,2);
          System.out.println(s);
          System.out.println(d.length); 

这是得到的结果

数组d的长度是(一个汉字占两个字节):9个字节
�
9

不太理解为什么一个汉字占两个字节,"你我他"的长度却是9
还有运行结果的第二行那个问号是啥意思啊?

  • 写回答

5条回答

  • shufusheng 2016-01-21 02:26
    关注

    汉字使用gbk,utf-8的编码所占的字节长度不一样;第二行是乱码截取有问题。你可以参考下面
    byte[] t_iso = "你我他".getBytes("ISO8859-1");
    byte[] t_gbk = "你我他".getBytes("GBK");
    byte[] t_utf8 = "你我他".getBytes("utf-8");
    byte b[] = "hahaha".getBytes();
    System.out.println("数组d的长度是(一个汉字占两个字节):" + t_utf8.length + "个字节");

        String s = new String(t_utf8);
        System.out.println(s);
        System.out.println(t_iso.length);
        System.out.println(t_gbk.length);
        System.out.println(t_utf8.length);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?