问题如上.我手动写了一个文件!我要把这个文件读出来!其实夹杂着汉字.
怎么样把汉字正常显示出来/?

解决方案 »

  1.   

    要读取一个文本文件,首先需要知道这个文本文件的字符编码类型,一般如果在保存的时候没有显示指定编码类型,则默认为当前操作系统类型。由于我们现在大多数使用的编码都是变长编码,如UTF-8、GB2312,在进行编码的时候会将英文字符(ascii)编码为一个字节,而将汉字编码为两个或以上的字节。基于这个原因,在进行文本文件的随机定位(注意:定位一般都是定位从哪个字节开始操作)读取时,很有可能定位的地方是在一个字符编码成的多字节的中间从而导致半个汉字等问题。为了解决上面说的问题,一般有以下几种方式:
    1、采用定长编码,这样可以很简单的避免定位到一个字符的中间。
    2、手工编写程序根据字符编码类型判断当前定位是否处于一个字符的中间。
    3、实际上常规的需求是这样的,在文本文件中插入一个记录;如果是属于这种情况,则可以将记录设计成为等长字节的或者类似的;如果一个记录没有到指定的长度,则补充不可见字符等使之达到指定长度;如果使用这种方式,在定位时就非常简单,直接根据记录长度*记录序号进行定位即可。
      

  2.   

    ls 你自己试过吗?看看你的代码.
    我按行来也不行啊!
    RandomAccessFile raf=new RandomAccessFile("E:\\tt\\STUDENT.txt", "r");
     raf.readLine();
     读出来中文还是乱码!
      

  3.   

    rf.readUTF()
    给你贴个例子吧:
    import java.io.*;
    public class UsingRandomAccessFile {
    static String file = "rtest.dat";
    static void display() throws IOException {
    RandomAccessFile rf = new RandomAccessFile(file, "r");
    for(int i = 0; i < 7; i++)
    System.out.println("Value " + i + ": " + rf.readDouble());
    System.out.println(rf.readUTF());
    System.out.println(rf.readUTF());
    rf.close();
    }
    public static void main(String[] args)throws IOException {
    RandomAccessFile rf = new RandomAccessFile(file, "rw");
    for(int i = 0; i < 7; i++)
    rf.writeDouble(i*1.414);
    rf.writeUTF("The end of the file");
    rf.writeUTF("你好");
    rf.close();
    display();
    rf = new RandomAccessFile(file, "rw");
    rf.seek(5*8);
    rf.writeDouble(47.0001);
    rf.close();
    display();
    }
    }