小博呀 2022-01-25 14:57 采纳率: 42.9%
浏览 29
已结题

关于java英文,中文所占大小的问题

“人” 转换成byte 显示长度为 3,“b”转换成byte 显示长度也为3,印象中:英文字符占1个字节,中文占两个字节。输出的和显示的不一样,希望能帮我解释一下,谢谢大家!还有,String c = "人",然后c.length()为什么是1。


            String a = "人";
            byte[] byte1 = a.getBytes("UTF-8");
            System.out.println(byte1.length);//输出3
            for (int i = 0;i < byte1.length;i++)
                System.out.print(byte1[i]);//输出-28-70-70

            System.out.println();


            String c = "人";
            System.out.println(c.length());//输出1


            String b = "b";
            byte[] byte2 = a.getBytes("UTF-8");
            System.out.println(byte2.length);// 3

            for (int i = 0;i < byte2.length;i++)
                System.out.print(byte2[i]);//输出-28-70-70
  • 写回答

1条回答 默认 最新

  • Tomshidi 2022-01-25 15:05
    关注
    1. "人"转换成byte显示长度为3,是因为你用的UTF-8编码,在这个编码里,所有的字符字节长度都是3,当然包括英文字符。
    2. 你可以看看转换出来的3个byte的数值大小,中文要明显大于英文。这也就是有些教材中说的英文1个字节,中文2个字节的由来,因为一个字节存不下中文的编码值。
    3. c.length()获取的是字符的个数,字符的个数!=字符的字节数。字符的个数就是你眼睛实际看到的数量。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月2日
  • 已采纳回答 1月25日
  • 创建了问题 1月25日

悬赏问题

  • ¥20 simulink单相桥式整流电路
  • ¥35 问问51单片机流水灯的代码该怎么写
  • ¥15 关于#百度#的问题:感觉已经将字体段落、字体、页边距、纸张大小、文档网络调成与论文模板一致,为什么黄色部分字体左右的间距还是不一样啊,求私信发文件接收看一下
  • ¥15 stata webuse报错
  • ¥15 TypeError: Cannot read properties of undefined (reading 'status')
  • ¥15 如何利用AI去除图片中的竹架子
  • ¥15 python 写个基金爬取的代码,自动卖出功能
  • ¥15 Linux系统启动不起来
  • ¥15 为什么运行仿真数码管不亮(语言-c语言)
  • ¥15 陈仁良《直升机飞行动力学》小扰动线化方程如何推导