前两天,用了如下代码:
Reader r = new FileReader("C:\\Documents and Settings\\Administrator\\桌面\\a.txt");
BufferedReader br = new BufferedReader(r);
char[] c = new char[1024];
Writer out = new FileWriter("C:\\Documents and Settings\\Administrator\\桌面\\c.txt",true);
BufferedWriter bw = new BufferedWriter(out);
while((br.read(c))!= -1){
System.out.println(String.valueOf(c));
bw.write(c);
bw.flush();
}
bw.close();
out.close();
br.close();
r.close();
将文件出入,然后写出,中文正常显示,但是,今天,我用另外一个eclipse,这eclipse的java source编码是UTF-8,之前那eclipse是默认的,然后运行这段代码,结果出现了乱码情况。
到网上找下解决方案。解决办法如下:
>将文件作为字节流输入,然后通过InputStreamReader,将字节流通过指定的编码转换成字符流。
我实验了下,我指定的格式是UTF-8乱码依然。于是重新指定为GBK,结果正常输出汉字
我猜想可能的原因是 :window 平台是不是用GBK作为中文的编码格式,eclipse 默认java文件也是GBK编码,当我修改成UTF-8之后,java读取文件,就将本身以GBK编码的文件用以UTF-8编码格式读取,就导致了乱码的出现。
有个疑问,为什么我修改java source的编码,却影响到了流的输入编码~~~~如果不是这样的,那到底是怎样。希望明白人指点下