JAVA从txt导入文字,设置-Dfile.encoding=gbk后,文字是奇怪的字符,请问是什么原因?

问题遇到的现象和发生背景

JAVA从txt导入文字,设置-Dfile.encoding=gbk后,题目文字是奇怪的字符。

问题相关代码,请勿粘贴截图
public void init() throws IOException {
        InputStreamReader isr = new InputStreamReader(new FileInputStream("exam.txt"));
        int ch;
        int i = 0;
        while ((ch = isr.read()) != -1) {
            String qItem = "";
            do {
                qItem += (char) ch;
            } while ((ch = isr.read()) != 13);
            isr.read();
            System.out.println(qItem);
            String[] qItemSplit = qItem.split("#", 3);
            Question q = new Question(qItemSplit[0], qItemSplit[1], qItemSplit[2].split("#"));
            qList[i++] = q;
        }
        //释放
        isr.close();
    }

txt文本中存放

树最适合用来表示#C#有序元素#无序元素#元素之间具有分支层次关系的数据#元素之间无联系的数据
按照二叉树的定义,具有3个结点的二叉树有种#C#3#4#5#610个叶子结点的二叉树中有个度为2的结点#B#8#9#10#11
运行结果及报错内容

img

我的解答思路和尝试过的方法

设置-Dfile.encoding=gbk未能达到预期效果

我想要达到的结果

正常显示字符。

内容转下格式,编码格式错了

dflie.encoding是jvm强制系统文件编码,和你读文件是两个东西;
乱码要么把你文件编码改一下格式;
要么使用BufferReader

img


记事本右下角显示有文本编码格式,确认下是否一致

【已解决】把txt文件保存格式从UTF-8改成ANSI即可。