使用NetBeans IDE开发的Java应用程序中不打印的阿拉伯字符

时间:2017-11-08 05:44:12

标签: java swing netbeans unicode arabic

我使用NetBeans IDE在JAVA中创建了一个桌面应用程序。应用程序可以将数据写入文件。我在我的应用程序中使用阿拉伯字符,当我直接从NetBeans运行应用程序时,我可以将阿拉伯字符写入文件而没有任何问题。但是当我在NetBeans之外的dist文件夹中运行.jar文件时,它会显示' ????'而不是阿拉伯字体。如果有人能帮助我找到解决方案,我将不胜感激。The screen shot is given below

这是我的自定义记录器类:

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("محمد اقبال");

1 个答案:

答案 0 :(得分:2)

在NetBeans中运行和命令行之间使用不同的编码。快速解决您的问题是添加

fh.setEncoding("UTF-8"); // and catch UnsupportedEncodingException

到您展示的代码。

更好地解决您的问题:

  1. 不要使用java.util.logging它太可怕了,没有人使用它
  2. 不要为日志记录创建“自定义代码”。你不需要它。如果您切换到SLF4J/Logback等现代记录器,则尤其如此。