如何正确计算文本所占字节数

计算文本(字符串)所占字节数,大家第一个想到的应该就是String类的getBytes()方法,该方法返回的是字符串对应的字节数组,再计算数组的length就能够得到字符串所占字节数。例如:
public static void main(String []args)  {
// 运行结果:12
System.out.println("旭日东升".getBytes().length);
}
上面的示例中计算了四个个中文所占的字节数为12,即一个汉字占3个字节。真的是这样吗?其实我们忽略了一个问题:对于不同的编码方式,中文所占的字节数也不一样!这到底要怎么呢?在上面的例子中,我们并没有指定编码方式,那么会使用默认的编码方式。先来看我得出的三条结论:
1)如果上面的例子运行在默认编码方式为ISO8859-1的操作系统平台上,计算结果是4;
2)如果上面的例子运行在默认编码方式为gb2312或gbk的操作系统平台上,计算结果是8;
3)如果上面的例子运行在默认编码方式为utf-8的操作系统平台上,计算结果是12;
如果真的是这样,是不是意味着String.getBytes()方法在我们的系统平台上默认采用的是utf-8编码方式呢?我们再来看一个例子:
public static void main(String []args) throws UnsupportedEncodingException  {
// 运行结果:4
System.out.println("旭日东升".getBytes("ISO8859-1").length);
// 运行结果:8
System.out.println("旭日东升".getBytes("GB2312").length);
// 运行结果:8
System.out.println("旭日东升".getBytes("GBK").length);
// 运行结果:12

System.out.println("旭日东升".getBytes("UTF-8").length);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值