Java本机语言应用程序无法在IDE之外工作

Java本机语言应用程序无法在IDE之外工作,java,swing,netbeans,fonts,Java,Swing,Netbeans,Fonts,我有一个用netbeans在java下开发的程序。它有一个文本窗格,可以获取用非英语编写的文本,并执行一些操作,包括“保存”“打开”“新建…” 当我从netbeans运行该程序时,它运行得很好,并且运行得完美无缺。但是,当我转到dist文件夹并运行jar(应该是可执行文件)时,它运行良好,但当我向编辑器打开以前保存的文件时,它会显示神秘的字体 像- লিখ “原始输入为”请尝试更改您的读取逻辑,以使用InputStreamReader,它允许设置编码: InputStreamReader inp

我有一个用netbeans在java下开发的程序。它有一个文本窗格,可以获取用非英语编写的文本,并执行一些操作,包括“保存”“打开”“新建…”

当我从netbeans运行该程序时,它运行得很好,并且运行得完美无缺。但是,当我转到dist文件夹并运行jar(应该是可执行文件)时,它运行良好,但当我向编辑器打开以前保存的文件时,它会显示神秘的字体

像-


লিখ “原始输入为”请尝试更改您的读取逻辑,以使用InputStreamReader,它允许设置编码:

InputStreamReader inputStreamReader = 
  new InputStreamReader(new FileInputStream (file), "UTF-8" );
OutputStreamWriter outputStreamWriter = 
  new OutputStreamWriter(new FileOutputStream (file), "UTF-8" );
还可以将写入逻辑更改为使用OutputStreamWriter,它允许设置编码:

InputStreamReader inputStreamReader = 
  new InputStreamReader(new FileInputStream (file), "UTF-8" );
OutputStreamWriter outputStreamWriter = 
  new OutputStreamWriter(new FileOutputStream (file), "UTF-8" );

根本问题是当前应用程序正在使用“平台默认”字符集/字符编码读取文件。当您从命令行和NetBeans运行时,这显然是不同的。在前一个原因中,它取决于主机操作系统或当前shell的区域设置。。。取决于你的平台。在NetBeans中,它似乎默认为UTF-8


@Andrey Adamovich的回答解释了如何在使用文件读取器打开文件或使用输入流读取器调整字节流时指定字符编码。

非常感谢您的回答。它起作用了,我找不到InputStreamWrite,所以我猜它是-OutputStreamWriter-OutputStreamWriter=new OutputStreamWriter(新文件OutputStream(file),“UTF-8”);再次感谢是的,这是一个打字错误。答案是固定的。