请问 为什么getBytes 第一条返回的是4 第二条返回的是6?

zzh200411 2016-04-06 10:42:53
System.out.println("啊(Unicode) :" + "啊".getBytes("Unicode").length);
System.out.println("啊啊(Unicode) :" + "啊啊".getBytes("Unicode").length);
System.out.println("啊啊啊(Unicode) :" + "啊啊啊".getBytes("Unicode").length);
System.out.println("啊啊啊啊(Unicode) :" + "啊啊啊啊".getBytes("Unicode").length);

啊(Unicode) :4
啊啊(Unicode) :6
啊啊啊(Unicode) :8
啊啊啊啊(Unicode) :10
...全文
138 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Inhibitory 2016-04-07
  • 打赏
  • 举报
回复
Java 内部字符串使用的是 UTF-16,前面 2 个字节表示字节序大端或者小端,用 2 进制可以看到
飏飏一蝶 2016-04-06
  • 打赏
  • 举报
回复
可能是专门用个数组头来识别编码类型
imfang 2016-04-06
  • 打赏
  • 举报
回复
引用 2 楼 ch1240249252 的回复:
BOM
支持!!!
System.out.println("啊(Unicode)   :" + "啊".getBytes("Unicode").length + Arrays.toString("啊".getBytes("Unicode")));  
System.out.println("啊啊(Unicode) :" + "啊啊".getBytes("Unicode").length + Arrays.toString("啊啊".getBytes("Unicode")));
System.out.println("啊啊啊(Unicode) :" + "啊啊啊".getBytes("Unicode").length + Arrays.toString("啊啊啊".getBytes("Unicode")));
System.out.println("啊啊啊啊(Unicode) :" + "啊啊啊啊".getBytes("Unicode").length + Arrays.toString("啊啊啊啊".getBytes("Unicode")));
啊(Unicode) :4[-2, -1, 85, 74] 啊啊(Unicode) :6[-2, -1, 85, 74, 85, 74] 啊啊啊(Unicode) :8[-2, -1, 85, 74, 85, 74, 85, 74] 啊啊啊啊(Unicode) :10[-2, -1, 85, 74, 85, 74, 85, 74, 85, 74]
liugddx 2016-04-06
  • 打赏
  • 举报
回复
这个没有什么规律,这是由sun的类库实现。
奄灬苟且偷生 2016-04-06
  • 打赏
  • 举报
回复
BOM
Vencc__ 2016-04-06
  • 打赏
  • 举报
回复
啊\n

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧