之前用FileReader读取文件时输出控制台发现出现了中文乱码,考虑到应该是编码格式不一致的问题导致的,这里在本地创建的一个txt文本文件,默认保存的文件编码格式是ANSI,那么FileReader在读取文件的编码格式一定是和文件编码格式不一致导出出现乱码的,首先想到的是指定一下FileReader读取文件的编码格式,但是看了一下FileReader的源码见下图
简单翻译一下就是FileReader在读取文件的时候采取的是系统默认的编码格式,在cmd命令行通过chcp查看一下编码格式,发现代码页为936表示系统默认编码格式为GBK与windows 文本文件默认编码格式不一致,所以必然会出现乱码,而且比较坑爹的是FileReader在读取文件的时候不能指定特定的编码格式,如果你想要指定自己的编码格式读取文件,那就在FileInputStream外面嵌套InputStream 来代替FileReader,之后指定编码格式即可,简单来说读取文件用下面的代码即可
InputStreamReader inputStreamReader = new InputStreamReader( new FileInputStream(path),"UTF-8");
这里还需要注意一点,这里指定的编码格式要与文本的编码格式一致,否则还是会出现乱码,通过文件另存为指定一下编码格式即可