我也说说字符串长度问题

背景:

int len = "周华健".length();//3

但是你把这个3个字复制到UE里面,可以看到是6.


对于含有中文的字符串取长度时,仅仅用  “周华健”.length()是不够的,因为编码的不同,导致长度计算会不合要求。

注意:讨论编码时其实有2个地方

1,你的文件本身的编码。你可以在eclipse下查看文件属性,这个编码决定了你写出来内容的真正编码

2,在内存中运行时,运行环境所在的编码格式。比如你可以使用new String("周华健","UTF-8")。


所有在讨论编码或者乱码时,必须先检查文件本身的编码格式,最常见的就是你 新建了个xml格式文件,里面写了明明是UTF-8,但是读取后乱码,这是你就要检查文件本身的编码。然后在读取时进行编码转换。


如果要String类型计算长度是,其实只是返回该对象的count属性,这个属性是final的。就算你更改了这个Stirng对象的编码,也不见得他的长度变化了。有人总喜欢说你使用某种编码格式后再计算长度,这是不对的。

计算长度时  可以用   getBytes()读取长度,字符占1位,中文占2位,UTF-8编码下的中文占3位(常规下占3位,我觉得另有乾坤),这样算出来的是比较合理的。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值