Java 没有正确显示重音词

Java doesn't display accent words correctly

我有一个 java 程序可以保存一个文本文件,然后在对话框中输出它的内容。 当我运行程序inside我的IDE(BlueJ)显示如下:

如您在对话框中所见,“1º) Mónica”行正确显示。
但是当我 运行 相同的程序 之外时 IDE "Mónica" 显示不正确,如图所示:

如何解决此问题以始终显示正确的输出?

这是将文本文件读取为字符串的代码

public String recordesString()
    {
        Premios premios = new Premios();
        File recordes = new File("recordes.txt");
        if(!recordes.exists()) {
            if(!client.isConnected())
                openFTPSession();
            downloadRecordes(); // this downloads the recordes.txt file
        }
        Scanner s = null;
        try {
            s = new Scanner(recordes);
        } catch (Exception e) {
            e.printStackTrace();
        }
        String string = "";
        String linha = null;
        for(int i = 1; s.hasNext(); i++) {
            linha = s.nextLine();
            String palavra[] = linha.split(" ",2);
            string += i+"º) "+palavra[1] +"  "+ premios.getPremio(Integer.parseInt(palavra[0]))+"\n";
        }
        s.close();
        try {
            Files.deleteIfExists(Paths.get(ficRecordes));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return string;
    }

扫描器使用底层平台的默认字符集读取文件。

http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#Scanner(java.io.File)

我希望文件以 UTF-8 编码,当您 运行 在 IDE 之外时,默认字符集是 ISO-latin-1 左右。如果您在创建扫描仪时指定文件的编码,结果将是可预测的。

s = new Scanner(recordes, "UTF-8");