如何为在 JTextPane 上的单独 JFrame 上打开的文件设置 UTF-8 编码

How to set UTF-8 encoding for a file which opens on a seperate JFrame on a JTextPane

我有一个单独的 class 和一个 JFrame,当用户单击我的主框架上的按钮时打开。该框架有一个 JTextPane 显示内容。我用下面编写的代码打开我的文件。但在斯洛文尼亚,我们有一些字母无法正确显示(例如,Grilled chicken = piščanec na žaru... 其中 š、č 和 ž 显示为正方形)。

我的问题是,是否可以在不更改字体的情况下为文本或文件设置 UTF-8 编码?字体必须保持默认(使用 NetBeans)。

public class EditFrame extends javax.swing.JFrame {

    public void readFile(File f) {
        try {
            textPane.read(new java.io.FileReader(f), null);
        } catch (IOException ex) {
            Logger.getLogger(EditFrame.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    ...
}

您必须指定您正在读取的文件的编码。

可以这样做:

BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f), "UTF-8"));
textPane.read(reader, null);