2017-11-08 7 views
0

NetBeans IDEを使用してJavaでデスクトップアプリケーションを作成しました。アプリケーションはファイルにデータを書き込むことができます。私はアプリケーションでアラビア文字を使用しています。アプリケーションをNetBeansから直接実行すると、アラビア文字を問題なくファイルに書き込むことができます。しかし、NetBeans以外のdistフォルダにある.jarファイルを実行すると、 '????'アラビア語のフォントの代わりに。私が解決策を見つけるのを助けることができれば、私は感謝しています。アラビア文字NetBeans IDEで開発されたjavaアプリケーションで印刷されない文字

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); 
     } 
    } 
} 

と私はこの方法を使用します:The screen shot is given below

は、これは私のカスタムロガークラスであるあなたは、NetBeansで実行している間、およびコマンドラインから使用中の異なるエンコーディングを持つ

MLogger.writeLogToFile("محمد اقبال"); 
+0

どのようにデータを書きますか?ちょうどロガーを使用して?ファイルがどのエンコードに入ると思いますか? UTF-8またはその他のエンコーディング? – Kayaman

+0

私はカスタムLoggerクラスを使用します –

+0

どのようにjarファイルを実行しますか?これはLinuxやWindowsのボックスですか? OSのデフォルト文字セットとは何ですか? javaのデフォルトのエンコーディングを指定するとどうなりますか:https://stackoverflow.com/a/362006/180100 –

答えて

2

を。問題の迅速な修正方法は、表示されたコードに

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

を追加することです。あなたの問題のため

より良い修正がある:それは恐ろしいです、と誰もが

  • それを使用していないことは、ロギングのための「カスタムコード」を作成しないでくださいjava.util.logging

    1. 使用しないでください。あなたはそれを必要としません。 SLF4J/Logbackのような最新のロガーに切り替えると、これは特に当てはまります。
  • +0

    ありがとうございました。 fh.setEncoding( "UTF-8")が正常に動作します。 –

    関連する問題