背景:
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位,我觉得另有乾坤),这样算出来的是比较合理的。