系统中出现字符长度问题,请各位帮忙。
问题:系统默认字符是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
之类的方法都不行
[b]问题补充:[/b]
Re:lovewhzlq 和 sunlightcs
谢谢你们的回复。
我知道utf-8以三个字节存储中文
gbk以二个字节存储中文
可是我的数据从数据库拿出来就是UTF-8编码的,
或者就算用String a=“张三”,这样子也是UTF-8存储。
但是我要取到后来变成GB2312后的长度
例如 “中国”我就要得到长度4,“中国A”得到长度5。
最好提供实现的代码,谢谢!
[b]问题补充:[/b]
Re:lovewhzlq 和 sunlightcs
谢谢你们的回复。
我知道utf-8以三个字节存储中文
gbk以二个字节存储中文
可是我的数据从数据库拿出来就是UTF-8编码的,
或者就算用String a=“张三”,这样子也是UTF-8存储。
但是我要取到后来变成GB2312后的长度
例如 “中国”我就要得到长度4,“中国A”得到长度5。
最好提供实现的代码,谢谢!