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 的另一个 class 中使用这个静态方法:
String text = TextReader.getText(currentFile);
textArea.setText(text);
运行 并选择文件后,我得到了随机字符。在这种情况下,解决方案是什么?
您的代码似乎没问题。我的猜测是您正在尝试读取 docx
文件。
您不能通过这种方式直接读取 docx
文件。使用像 Apache POI 这样的库。
如果您确实在使用文本文件,则可能是您用来保存文件的应用程序使用了错误的编码。您可以尝试使用 Java 本身将一些(硬编码的)示例俄语文本保存到文本文件中,然后将其再次读入您的 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 的另一个 class 中使用这个静态方法:
String text = TextReader.getText(currentFile);
textArea.setText(text);
运行 并选择文件后,我得到了随机字符。在这种情况下,解决方案是什么?
您的代码似乎没问题。我的猜测是您正在尝试读取 docx
文件。
您不能通过这种方式直接读取 docx
文件。使用像 Apache POI 这样的库。
如果您确实在使用文本文件,则可能是您用来保存文件的应用程序使用了错误的编码。您可以尝试使用 Java 本身将一些(硬编码的)示例俄语文本保存到文本文件中,然后将其再次读入您的 JTextArea
.