我构建了一个读取 xml 文件的程序,当我在 netbeans 中运行它时,它可以工作并且字符可以读取图像 opening in netbeans
但是当我从 dist 文件夹运行它时,它可以工作,但是当我尝试打开包含阿拉伯语的文件夹时,它会显示如图所示的字符 opening from dist folder
这是一些打开代码
int option = chooser.showOpenDialog(this);
if(option == JFileChooser.APPROVE_OPTION){
if(chooser.getSelectedFile()!=null){
try {
reader = new FileReader(chooser.getSelectedFile());
BufferedReader buff = new BufferedReader(reader);
text.read(buff, null);
opened = chooser.getSelectedFile();
this.setTitle(chooser.getSelectedFile().getAbsolutePath());
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, "الملف غير موجود", "خطأ", JOptionPane.ERROR_MESSAGE);
}finally{
if(reader!=null)try {
reader.close();
} catch (IOException ex) {
}
}
}
}
最佳答案
FileReader 是一个旧的实用程序类,它使用默认的平台编码。这会因计算机而异,并且不可移植。
Path path = chooser.getSelectedFile().toPath();
text.read(Files.newBufferedReader(path, StandardCharsets.UTF_8));
//text.read(Files.newBufferedReader(path, Charset.forName("Windows-1256"));
假设阿拉伯文本存储为 UTF-8 或 Windows-1256。
关于java - PrintReader 返回不可读的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45124118/