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

gbk编码下 大写字母A是一个字节吗

这里老师说只能写进去后八位 这里大写A是两位的吗

正在回答

3 回答

首先,gbk编码方式是中文占两个字节,英文占1个字节。但是,Java是双字节编码,采用的是utf-16be编码方式,而utf-16be编码是中文和英文都占两个字节。这里的write()写A、B、i  都是采用的Java默认的编码,只是后面的汉字“中”才采用的gbk编码,所以老师getBytes("gbk")传入了编码方式。

因为A是char 型,16位,本身是占两个字节。我猜你是上面这个知识点没弄明白。

这里老师就是想说明write()方法一次只能写一个字节,所以这里A只写了后8位,所以A是没有读写完的。但是后面能正常被read()读出来,是因为A本身后8位字节就表示它了(01000001),前8位都是0。


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

蓝_zz小姐

也说Java采用的utf-16编码,或称为unicode编码,反正是一个意思,中英文都占两个字节。
2017-12-05 回复 有任何疑惑可以回复我~

首先,gbk编码方式是中文占两个字节,英文占1个字节。但是,Java是双字节编码,采用的是utf-16be编码方式,而utf-16be编码是中文和英文都占两个字节。这里的write()写A、B、i  都是采用的Java默认的编码,只是后面的汉字“中”才采用的gbk编码,所以老师getBytes("gbk")传入了编码方式。

因为A是char 型,16位,本身是占两个字节。我猜你是上面这个知识点没弄明白。

这里老师就是想说明write()方法一次只能写一个字节,所以这里A只读了后8位,所以A是没有读完的。但是后面能正常被read()出来,是因为A本身后8位字节就表示它了(01000001),前8位都是0。

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

qq_慕后端9416733

中文那里不是很懂,中文在GBK的编码下不是占两个字节吗?然后write只写入一个字节,但结果是把两个字节都写进去了。这是为什么呢?
2018-07-27 回复 有任何疑惑可以回复我~

gbk编码下英语字母是一个字节,,这里的write()方法是只能写一个字节,所以如果是A的话就可以只写一次,就能写完,但如果是汉字的话,占两个字节,因为一次只能写一个字节,所以要写两次。。老师的意思只是说明write()方法一次只能写一个字节,不是说A占两个字节。

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

慕移动7208282 提问者

有一个地方不太懂。老师说A前八位和后八位,只能把后八位写进去,但是后八位直接可以表示这个A,因为前边都是0。 那这个不就是A是16位也就是2个字节了。。。
2017-10-31 回复 有任何疑惑可以回复我~
#2

慕移动7208282 提问者

是不是A 是一个字节 但是char是两个字节 这么理解正确吗
2017-10-31 回复 有任何疑惑可以回复我~
#3

密蒙 回复 慕移动7208282 提问者

是哦,应该就是你理解的,,,A在存储时肯定是当做char来存储的
2017-10-31 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

gbk编码下 大写字母A是一个字节吗

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