繁体   English   中英

Java:UTF8编码未在JTextArea中正确显示

[英]Java: UTF8 encoding is not displayed correctly in JTextArea

我试图在JTextArea中显示txt或docx文件的内容,但是文本区域无法正确显示亚美尼亚语或俄语文本。 InputStreamReader中的UTF-8编码无效:

public class TextReader {

    public static String getText(File textFile) throws IOException {
        FileInputStream fis = new FileInputStream(textFile);
        InputStreamReader isr  = new InputStreamReader(fis, "UTF8");
        BufferedReader br  = new BufferedReader(isr);
        StringBuilder text = new StringBuilder();

        String c;

        while ((c = br.readLine()) != null)
            text.append(c + "\n");

        fis.close();
        isr.close();
        br.close();

        return String.valueOf(text);
    }

}

我在JTextArea的另一个类中使用此静态方法:

        String text = TextReader.getText(currentFile);
        textArea.setText(text);

运行并选择文件后,我得到了随机字符。 在这种情况下,解决方案是什么?

您的代码似乎很好。 我的猜测是您正在尝试读取docx文件。

您无法通过这种方式直接读取docx文件。 使用一些库,例如Apache POI

如果您确实在使用文本文件,则可能是您用来保存文件的应用程序使用了错误的编码。 您可以尝试使用Java本身将一些(硬编码)示例俄语文本保存到文本文件,然后再次将其读入JTextArea

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM