问答详情
源自:3-1 RandomAccessFile基本操作

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

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

提问者:慕移动7208282 2017-10-31 14:51

个回答

  • 蓝_zz小姐
    2017-12-05 00:36:20

    首先,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。


  • 蓝_zz小姐
    2017-12-05 00:33:35

    首先,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。

  • 密蒙
    2017-10-31 16:57:13

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