请问,我下面这两个方法,第一个方法在读取中文文件时,显示出来的结果是乱码;第二个方法,在读取和写入中文文件时候都是乱码,请问这是为什么,该怎么才能解决中文问题呢,高手请帮我啊,高分相送。public  List readFileToList(File file) {
        BufferedReader breader;
        List list;
        String line;
        list = new ArrayList();
        try {
            breader = new BufferedReader(new FileReader(file));
            while ((line = breader.readLine()) != null)
                list.add(line);
            breader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return list;
    }        public  void copyFile(String sourcename, String targetname)
            throws Exception {
        BufferedReader breader;
        BufferedWriter bwriter;
        try {
            breader = new BufferedReader(new FileReader(sourcename));
            bwriter = new BufferedWriter(new OutputStreamWriter(
                    new FileOutputStream(targetname)));
            while (breader.ready())
                bwriter.write(breader.read());
            breader.close();
            bwriter.close();
        }
        catch (Exception e) {
            throw e;
        }
    }

解决方案 »

  1.   

    //第一个这样转一下
    try {
    String temp;
    byte[] temp_byte = str.getBytes("ISO8859-1");
    temp = new String(temp_byte, "GBK");
    return temp;
    } catch (Exception e) {
    return null;
    }
    //第二个,在write()方法后,加一句
    String tmp = bwriter.toString("GBK");//其中的编码,要看你的需要了
      

  2.   

    学习temp = new String("iso8859_1", "GBK");
      

  3.   

    上面说的是一种方法,更好的方法是打开,或者写文件时按照一定的编码就什么问题都没有了
    new BufferedReader(new InputStreamReader(new FileInputStream(file),"GB23122"));
      

  4.   

    楼上的方法更好一些.
    用java io时要注意
    把InputStream 转换为 Reader时要注意编码,
    因为InputStream是字节流,而Reader是以字符为单位.
      

  5.   

    加上相关的编码操作。
    如果上面的结果还是不正确,此外在你的system的属性中,查看当前的字符集是否使你想要的,不是的话,用SetProPerty()改变它。