我构建了一个读取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) {
}
}
}
}
答案 0 :(得分:1)
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。