java - PrintReader 返回不可读的字符

标签 java swing netbeans arabic readfile

我构建了一个读取 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/

相关文章:

java - 在java中使用超出范围的变量

java - Eclipse "Add unimplemented methods"方法排序

java - JMenuBar不会出现在JFrame中

java - 用于 Java Swing 的 map API

java - 代码在 Netbeans 中编译并运行,但不在 java 命令行中编译和运行

javascript - Netbeans 中用于 Javascript 的 SOUT 快捷方式

java - 设置背景颜色不起作用

java - 如何在android中替换双引号内的字符

java - paintComponent() 在 repaint() 之后留下先前绘制的图像

eclipse - JavaRebel 与 Maven 中的多模块企业项目