为了账号安全,请及时绑定邮箱和手机立即绑定

J学 74 -27 -83 -90 ?utf-8?

```java

package com.string;

    public class CNStrTest {

        public static void main(String[] args) {

         String str = "J学";

         byte[] b = str.getBytes();

         for (int i = 0; i < b.length; i++) {

             System.out.print(b[i] + " ");

         }

    }

}

```

结果

```

74 -27 -83 -90 

```

正在回答

4 回答

在java中,一个字符等于多少字节?

或者更详细的问:在java中,一个英文字符等于多少字节?一个中文字符等于多少字节?

 

答案

Java采用unicode来表示字符,java中的一个char是2个字节,一个中文或英文字符的unicode编码都占2个字节,但如果采用其他编码方式,一个字符占用的字节数则各不相同。

在 GB 2312 编码或 GBK 编码中,一个英文字母字符存储需要1个字节,一个汉子字符存储需要2个字节。

在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3到4个字节。

在UTF-16编码中,一个英文字母字符存储需要2个字节,一个汉字字符储存需要3到4个字节(Unicode扩展区的一些汉字存储需要4个字节)。

在UTF-32编码中,世界上任何字符的存储都需要4个字节。


0 回复 有任何疑惑可以回复我~
#1

Capricorncd 提问者

3Q~
2019-04-08 回复 有任何疑惑可以回复我~
语句中添加   byte[] c = aa.getBytes("GBK");

UTF-8编码长度:3

GBK编码长度:2

GB2312编码长度:2

==========================================

字节长度为:4

字符长度为:2

-47 -89 


0 回复 有任何疑惑可以回复我~
#1

慕少1317773

大佬 课程中其它数字都对应上了,多出来两个32 代表什么呢
2020-05-20 回复 有任何疑惑可以回复我~
String aa = "学";
System.out.println("UTF-8编码长度:"+aa.getBytes("UTF-8").length);
System.out.println("GBK编码长度:"+aa.getBytes("GBK").length);
System.out.println("GB2312编码长度:"+aa.getBytes("GB2312").length);
System.out.println("==========================================");

   ------运行结果

UTF-8编码长度:3

GBK编码长度:2

GB2312编码长度:2

==========================================


0 回复 有任何疑惑可以回复我~

如果编码方式为GBK,对于字符串“测试test”,字符长度为6,字节长度为8。

如果编码方式为UTF_8,对于字符串“测试test”,字符长度为6,字节长度为10。


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

J学 74 -27 -83 -90 ?utf-8?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信