xinye_bao 2009-10-16 11:55
浏览 161

java汉字字符集长度的问题

系统中出现字符长度问题,请各位帮忙。

问题:系统默认字符是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。
最好提供实现的代码,谢谢!

  • 写回答

1条回答 默认 最新

  • wanghaolovezlq 2009-10-16 12:04
    关注

    因为两种编码对中文的支持是不一样的,

    utf-8以三个字节存储中文

    gbk以二个字节存储中文

    评论

报告相同问题?

悬赏问题

  • ¥15 luckysheet
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误