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