打包 JavaFX 项目后无法读取 UTF-8 文件

Can't read UTF-8 file after packaging JavaFX project

我的项目必须读取以 UTF-8 编码的文本文件。 当我 运行 我在 NetBeans 中的程序时,一切正常,并且从文件中正确读取了字符。但是当我 运行 我的 .exe 打包程序时,字符不是他们应该的。

我的代码:

BufferedReader br = new BufferedReader(new FileReader("D:\sa\shlah.txt" ));
String s = br.readLine();
BufferedReader br1 = new BufferedReader(
                new UTF8Reader(new FileInputStream(shlahFile)));

上面的代码使用了 UTF8 阅读器,即使您已经打包了程序,它也能正常工作。

我想这是不同默认编码的问题...

指定要使用的编码应该可以解决您的问题。这可以通过使用 Files.newBufferedReader:

在不使用外部库的情况下实现
BufferedReader br = Files.newBufferedReader(new File("D:\sa\shlah.txt").toPath(), StandardCharsets.UTF_8);