系统中出现字符长度问题,请各位帮忙。问题:系统默认字符是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
之类的方法都不行
目标:取得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
之类的方法都不行
{
String a = "张三";
//使用双字节编码对它进行解码
byte[] b = a.getBytes("gb2312");
//使用单字节编码对它进行编码
String s = new String(b, "iso8859-1");
//输出 4
System.out.println(s.length());
//使用iso8859-1的好处是它不会丢失信息,还可以将它还原
System.out.println(new String(s.getBytes("iso8859-1"), "gb2312"));
//输出 张三
}