返回信息流char a='\u4e34';
String s = String.valueOf(a);
System.out.println(s.getBytes().length);//输出2
char a='\u1234';
String s = String.valueOf(a);
System.out.println(s.getBytes().length);//输出1
为什么汉字字符就会输出2其他就是1呢?
不都是char转换成的String吗
看Java API解释:使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
但不太理解。
这是一条镜像帖。来源:北邮人论坛 / java / #39991同步于 2015/4/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
关于String.getBytes().length的问题
xssd
2015/4/14镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
【 在 xssd 的大作中提到: 】
: char不都是占两个字节?
char它的取值范围是0-65535并不意味着一个char一定是两个字节。还有一个概念叫“编码”,比如UTF8和GB18030
好像理解了些
3Q!
【 在 nuanyangyang 的大作中提到: 】
:
: char它的取值范围是0-65535并不意味着一个char一定是两个字节。还有一个概念叫“编码”,比如UTF8和GB18030
嗯 GBK是2 UTF-8是3
【 在 yyy8848 的大作中提到: 】
: 请问你默认的解码方式是什么
: 我一般就用utf8,所以很想知道什么编码方式会输出你的结果