前两天,用了如下代码:

 

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的编码,却影响到了流的输入编码~~~~如果不是这样的,那到底是怎样。希望明白人指点下