Java InputStreamReader 将Stream转String出现乱码. 确认了文件原来有中文,不是乱码.
InputStream in=new FileInputStream("D:\\temp\\user2.txt");
System.out.println(stream2String(in));
//stream2String方法的主要代码:
sb = new StringBuffer();
//bfReader = new BufferedReader(new InputStreamReader(in)); //会出乱码
bfReader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
String line = bfReader.readLine();
后来设置了UTF-8原是出现乱码.
bfReader = new BufferedReader(new InputStreamReader(in, "UTF-8")); //网上几乎,青一色,都是说这种设置。
查了下原来文件的编码,是GB2312,恍然大悟。
原因:
要看文件是什么编码,用文件的编码读取,可以不是乱码. 比如,文件是GB2312,用 UTF-8读,还是会乱码的. 用GB2312就不会.

本文讨论了Java中从InputStream读取包含中文的文件时可能出现的乱码问题。通过示例代码展示了如何使用InputStreamReader和指定的字符编码(如UTF-8或GB2312)来正确读取不同编码格式的文件,强调了确定文件原始编码的重要性,以避免乱码。解决方案是根据文件的实际编码设置InputStreamReader,确保一致,从而正确解析文件内容。
453





