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

来源:3-1 RandomAccessFile基本操作

慕移动7208282

2017-10-31 14:51

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

写回答 关注

3回答

  • 蓝_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小姐

    也说Java采用的utf-16编码,或称为unicode编码,反正是一个意思,中英文都占两个字节。

    2017-12-05 00:50:04

    共 1 条回复 >

  • 蓝_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。

    qq_慕后端...

    中文那里不是很懂,中文在GBK的编码下不是占两个字节吗?然后write只写入一个字节,但结果是把两个字节都写进去了。这是为什么呢?

    2018-07-27 16:13:14

    共 1 条回复 >

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

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

    密蒙 回复慕移动720...

    是哦,应该就是你理解的,,,A在存储时肯定是当做char来存储的

    2017-10-31 17:36:18

    共 3 条回复 >

文件传输基础——Java IO流

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

133754 学习 · 1030 问题

查看课程

相似问题