这里老师说只能写进去后八位 这里大写A是两位的吗
首先,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。
首先,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。
gbk编码下英语字母是一个字节,,这里的write()方法是只能写一个字节,所以如果是A的话就可以只写一次,就能写完,但如果是汉字的话,占两个字节,因为一次只能写一个字节,所以要写两次。。老师的意思只是说明write()方法一次只能写一个字节,不是说A占两个字节。