java 字符长度问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 17:52:53
问题:系统默认字符是UTF-8编码,写入文本后GB2312编码。
目标:取得UTF-8字符写到文本(GB2312)后字节长度。
例:字符“张三”在程序中占用6字节,到文本中占4字节

String a=“张三”;
取值后
a.getBytes().length=6;
a.length=2

请教什么方法可以取到正确的长度4?
new String(accountHolderName.getBytes("UTF-8"),"8859_1").getBytes().length
new String(accountHolderName.getBytes("UTF-8"),"gb2312").getBytes().length
之类的方法都不行

public class Bytes{
public static void main(String[] args)throws Exception{
String s = "张三";
System.out.println(s.getBytes("gb2312").length);//4
System.out.println(s.getBytes("utf8").length);//6
}
}

a.length()*2就可以了嘛!
char占2个字节,取得字符个数乘以2不就是占的字节
如果里面有英文使用utf-8虽然char还是2个字节但是写到文件后占的就不是2个字节了

string 默认后面有一个“/o”的结束标志位,所以会多一个字符。
要获取想要的长度,取出a.ength * Character.size / 8 即可