java - Java:在 JTextArea 中未正确显示 UTF8 编码
问题描述
我正在尝试在 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
.
推荐阅读
- javascript - 如何将基于 URL 的 mp3 文件从客户端上传到节点服务器
- python - Google Drive API 权限不足:请求的身份验证范围不足
- html - Alpinejs 嵌套 x-data 范围问题?
- javascript - 256x256 blob 平铺图像 react-native-mapbox-gl / 地图
- java - 服务器使用 libgdx 发送事件
- java - 将具有空字符串的 Java 对象上的所有属性转换为 Null 的最佳方法
- http - What is the default cookie path of a cookie set at path /a/b/c?
- javascript - 单选按钮的反应矩阵
- python - 如何对具有相同值的多个列进行布尔掩码
- ios - 如何在 MessagesExtension 应用程序中检测界面或设备方向?