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

在15分22秒,为何说“中”是java的字符串,是UTF-16be的编码,在接着的阐述中说可以从j第10个字节读取,用gbk转化,能够成为“中”??????、、、实在是不明白。。。。544cd5e20001a16505000281.jpg

正在回答

2 回答

我的理解是,用seek(10)定位到 “中”字,先将字节存入buf数组,然后用gbk编码将buf改成gbk编码,最后打印输出buf,就得到了“中”字。

String s = "中";

byte[] gbk = s.getBytes("gbk");

raf.write(gbk);

System.out.println(raf.length());

//读文件,必须把指针移到头部

raf.seek(10);

//一次性读取,把文件中的内容都读到字节数组中

// byte[] buf = new byte[(int)raf.length()];

byte[] buf = new byte[2];

raf.read(buf);

System.out.println(Arrays.toString(buf));

String s1=new String(buf,"gbk");

System.out.println(s1);


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

我理解老师的意思是说,如果只是读取“中”这个字。之前写入“中”的时候是gbk编码,那么现在读的时候也是gbk编码的话,可以把“中”字打印出来。在java中,字符串是utf-16be编码,但在写的时候,是用gbk编码写入的。默认的编码与写入和读取时使用的编码不一定一致。

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

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信