为什么这个 utf8 编码后面会多个 0?

2018-07-03 09:40:16 +08:00
 codechaser
        Charset utf8 = Charset.forName("utf8");
        String ss = "I love you";
        ByteBuffer buffer = utf8.encode(ss);

        byte[] bytes = buffer.array();
        for (byte b : bytes){
            System.out.println(b);
        }

打印结果: 73 32 108 111 118 101 32 121 111 117 0 把"I love you"的'u'去掉得到: 73 32 108 111 118 101 32 121 111 没 0 啊?

2702 次点击
所在节点    Java
8 条回复
ThirdFlame
2018-07-03 09:41:47 +08:00
00 代表结束?
codechaser
2018-07-03 09:43:47 +08:00
@ThirdFlame 你好,我刚刚把'u'去掉了也没有 0 啊?
hand515
2018-07-03 09:45:17 +08:00
C 里的结束字符\0?
codechaser
2018-07-03 09:51:24 +08:00
@hand515 这是 java,java 有结束字符吗?
sagaxu
2018-07-03 09:55:59 +08:00
codechaser
2018-07-03 09:57:39 +08:00
@sagaxu Thanks!
joyme
2018-07-03 10:32:08 +08:00
ByteBuffer 有 limit 和 capacity 成员变量,limit 是结束位,capacity 是实际的容量。应该根据 limit 去读实际的内容。
lcdxiangzi
2018-07-04 15:55:35 +08:00
没有看懂为什么 ByteBuffer 要这样设计呢?有人可以指点一下吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/467672

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX