一个程序读取一个文件,每次单击一下按钮读取下一行的数据
把这一行显示在TextArea()中。现在问题是,每次读取数据后,会出现乱码,但是不是全部乱码,而是其中有几个字出现乱码。
请问如何解决?其中读取数据的代码如下:public void actionPerformed(ActionEvent arg0) {
File f = new File("C:\\Documents and Settings\\Administrator\\My Documents\\zh问答.TXT");
StringBuffer s = new StringBuffer();
try {
RandomAccessFile rsf=new RandomAccessFile(f,"r");

rsf.seek(seek_i);
s1=rsf.readLine();
if(s1!=null)
{
s.append(new String(s1.getBytes("8859_1"),"gb2312"));
seek_i=rsf.getFilePointer()+1;
}
t1.setText(s.toString());
catch (Exception e) {

e.printStackTrace();
} } });

解决方案 »

  1.   

    C:\\Documents and Settings\\Administrator\\My Documents\\zh问答.TXT 的编码是不是8859_1?
      

  2.   

    C:\\Documents and Settings\\Administrator\\My Documents\\zh问答.TXT 
    是window xp的文档的。 不清楚是那种编码。
      

  3.   

    你可以在eclipse里面把这个文件变成你想要的编码的。试试。
      

  4.   

    我的也是出乱码?我的eclipse是utf8 的编码,但是读取文本文件时就出乱码了
      

  5.   

    //在GUI中的应用,想让JTextArea显示文件的内容,但是中文就成了乱码void readFile(String path) // 显示打开文件的内容
    {

     try
     {
     File file = new File(path);

     BufferedReader br = new BufferedReader(new InputStreamReader(
     new FileInputStream(file), "GBK"));// 编码转换

     int size = (int) file.length();
     int charRead = 0;
     char[] content = new char[size];
     
     while (br.ready())
     {
     charRead += br.read(content, charRead, size - charRead);
     }
     br.close();

     text.setText(new String(content, 0, charRead));
     } catch (IOException e)
     {
     System.out.println("读取文件出错");
     }
    }
      

  6.   

    RandomAccessFile rsf=new RandomAccessFile(f,"r"); rsf.seek(seek_i); 
    s1=rsf.readLine(); 因为java中不管是英文字符,还是中文字符,它都采用两个字节存储,
    而本地计算机中的编码,英文只占用一个字节,而中文是两个,,,
    readLine()方法从该文件的当前文件指针处成功地读取字节,直到到达行结束符或文件的末尾
    读取的时候不要用readLine()方法,用readChar()方法
    下面是关于这个方法的介绍:
    public final char readChar()
                        throws IOException从此文件读取一个字符。此方法从该文件的当前文件指针开始读取两个字节。如果按顺序读取的字节为 b1 和 b2,其中 0 <= b1, b2 <= 255,则结果将等于: 
    (char)((b1 << 8) | b2)
     在读取了这两个字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。 
    指定者:
    接口 DataInput 中的 readChar
    返回:
    此文件的下两个字节,解释为 char。 
    抛出: 
    EOFException - 如果在读取两个字节之前此文件已到达末尾。 
    IOException - 如果发生 I/O 错误。
      

  7.   

    读文件还是用java.io.BufferedReader
    类比较好....
    而且编码可以指定的。
      

  8.   


    谢谢假如我用readChar()方法来读取文件的一行,应该如何读取的?