rj0511 2011-11-08 13:48
浏览 167
已采纳

一个神奇的现象

String s ="一";
byte[] b =s.getBytes();
System.out.println(b[0]);
System.out.println(b.length+"-"+s.getBytes().length);

以上代码分别把UTF-8和GBK两份,分别运行以上程序,居然得到两种结果。。。
求原因。。。

  • 写回答

2条回答 默认 最新

  • kinming 2011-11-08 15:52
    关注

    正常啊。当你用UTF-8保存代码的时候,s 的内容是UTF-8里面对应的”一“,占3个byte。当你用GBK保存代码的时候, s 的内容是GBK里面对应的“一”,占两个 bytes。所以结果当然不一样了。

    关键是 UTF-8以 3 个byte 来储存数据, GBK以 2 个 byte 来储存数据。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突