用java为什么输出了之后不是文字而是乱码

Python017

用java为什么输出了之后不是文字而是乱码,第1张

出现问题的原因是字节流中每个汉字是两个字节,所以肯定会出现乱码的,要将字节流通过BufferedReader变成按行读取的就可以了。

BufferedReader bre = null

try {

String file = "D:/test/test.txt"

bre = new BufferedReader(new FileReader(file))//此时获取到的bre就是整个文件的缓存流

while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环

{

System.out.println(str)//原样输出读到的内容

};

备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。

不要用系统写字板notepad保存UTF8的Java源文件。M$的UTF8是UTF8withBOM,而Java编译器识别的UTF8是UTF8withoutBOM,两者不兼容。

换个支持代码高亮的文本/代码编辑器如notepad3, Ms vs code.