我使用NetBeans IDE在JAVA中创建了一个桌面应用程序。应用程序可以将数据写入文件。我在我的应用程序中使用阿拉伯字符,当我直接从NetBeans运行应用程序时,我可以将阿拉伯字符写入文件而没有任何问题。但是当我在NetBeans之外的dist文件夹中运行.jar文件时,它会显示' ????'而不是阿拉伯字体。如果有人能帮助我找到解决方案,我将不胜感激。
这是我的自定义记录器类:
public class MLogger {
private static final Logger log = Logger.getLogger( MLogger.class.getName() );
private static FileHandler fh;
private static SimpleFormatter sf;
public static synchronized void writeLogToFile(String message){
try {
fh = new FileHandler("D://wblogs/wblog.txt", true);
// true forces append mode
sf= new SimpleFormatter();
fh.setFormatter(sf);
log.addHandler(fh);
log.log( Level.INFO,message);
} catch (IOException ex) {
Logger.getLogger(MLogger.class.getName()).log(Level.SEVERE, null, ex);
} catch (SecurityException ex) {
Logger.getLogger(MLogger.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
我使用的方法:
MLogger.writeLogToFile("محمد اقبال");
答案 0 :(得分:2)
在NetBeans中运行和命令行之间使用不同的编码。快速解决您的问题是添加
fh.setEncoding("UTF-8"); // and catch UnsupportedEncodingException
到您展示的代码。
更好地解决您的问题:
java.util.logging
它太可怕了,没有人使用它SLF4J/Logback
等现代记录器,则尤其如此。