下午同事给了一个电影的字幕文件,发现是乱码,偶觉得可能是编码问题,可是改了好几个编码还是不行,最后借助word才知道原来是Big5编码,于是我想到用程序来自动识别编码,可是不知道怎么写。然后我又想,我以字符流或字节流的方式读取这个文件(这个应该和编码没关系吧),然后按照某种指定编码输出到一个文件,可是搜索了半天,只查到以某种编码读出这个文件,我的意思就是说,我们不知道这个文件的原来编码,我们用一种和编码无关的方法读取这个文件,然后自己按照某种编码写入txt文件,这个编码可一个一个试,应该能正确输出她原先的格式吧。大家看这个如何写

解决方案 »

  1.   

    EX:
    BufferedReader br= new BufferedReader (new InputStreamReader(new FileInputStream(filename),"BIG5"))
    大概是这样 
    OutputStreamWriter也是一样的 可以在构造的时候指定编码
      

  2.   

    好了我写出来了FileInputStream fis = new FileInputStream("h:\\2.txt"); //读取2.txt
    BufferedInputStream bis = new BufferedInputStream(fis);
    DataInputStream in = new DataInputStream(bis);

    File out = new File("h:\\3.txt"); //写入3.txt
    BufferedWriter  bw = new BufferedWriter(new FileWriter(out,true)); byte[] b = new byte[1024];
    int c;

    while ((c = in.read(b)) != -1) {
    String str = new String(b,"Big5"); //设置字符集为Big5
    bw.write(str);
    bw.newLine();
    }
    bw.close();
    in.close();
    bis.close();
    fis.close();