怎么将汉字“中”正常读出来呢?

来源:3-1 RandomAccessFile基本操作

qq_萍萍儿_0

2016-04-04 22:16

老师说中属于utf-16be,可以单独读出来,但是怎么单独读出来呢?

写回答 关注

4回答

  • leowei
    2016-10-31 11:19:16

    其实写入'a' 不会干扰,写入'a'的后8位正好符合gbk编码,而是中间写入了int数,这个收到了干扰。



  • helloworld2008
    2016-07-20 11:27:40

    只要你的编码方式保持一致就可以了~

    你这“中”字前面有没有写入其他的,有时候也是受到前面的干扰,比如write("A");这样的,写入只写了一个字节,但是一个字符却是两个字节,但是读出来的时候只是1个字节,所以读到后面的时候就可能会出现问题。【不过我们也能看出来这1个字节表示的是这个字符】

    你也可以利用seek()来确定确定“中”字的位置,然后开始读,这样的话,都不会出现问题,就是稍微有一丢丢麻烦。

    楼上的应该就是利用系统默认的编码方式我gbk。

    leowei

    gbk 1个英文占一个字节,中文占两个字节, 写de时候,是符合gbk的格式的,读的时候为啥会出现乱码

    2016-10-31 10:36:14

    共 1 条回复 >

  • qq电子时代
    2016-04-13 20:12:05

    我这也没有出乱码啊  直接就读出来了 

    ??????

    占个地  谁能讲解讲解

    hellow...

    不是吧。。。老师的都试过了。不管是gbk还是utf-16be都是乱码啊。。

    2016-11-10 23:41:43

    共 1 条回复 >

  • 别路Biello
    2016-04-05 14:19:30

    在中的起始位置读两个字节到字节数组b里,再转化成utf-16be的字符串就可以了。

    String s=new String(b,"utf-16be");

    leowei

    这样理解是错误的。虽然是中在java 中是utf-16be 编码。但是写的时候已经被getbyte(buf,"gbk");已经编码成了 gbk。 所以读的时候也应该是String s=new String(buf,"gbk");

    2016-10-31 11:24:36

    共 1 条回复 >

文件传输基础——Java IO流

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

133754 学习 · 1030 问题

查看课程

相似问题