2010-11-25 16 views
0

ich eine UTF-8-Datei aus einer jar-Datei mit dem folgenden Code erstellen möchten:Generieren einer UTF-8-Datei aus einer jar-Datei

public class UTF8 { 
public static void main(String[] args) throws Exception { 
    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(
    "utf8.txt"), "UTF8")); 
    out.write("Look at this BASTÖÖÜÜÄÄ!"); 
} 
} 

Dieser Code funktioniert sehr gut mit Eclipse. Aber wenn ich es in eine JAR-Datei packe, verwendet es eine plattformabhängige Dateicodierung (Cp1252 zum Beispiel unter Windows). Was könnte ich dagegen tun?

Antwort

2
  1. "UTF8" sollte "UTF-8" sein.

  2. Auch OutputStreamReader(outputStream, encosingString) wirft UnsupportedEncodingException die Sie fangen sollten.

  3. großer Fehler: nie fangen (oder Haupt passieren) eine generische Exception

    public static void main(String[] args) throws Exception {} 
    

    Dies Sie verhindert, um zu sehen, was Ihre wirkliche Ausnahme war und wo passiert ist.

+1

Das "Exceptions auslösen" in der Hauptmethode ist vollkommen in Ordnung - die Ausnahme wird ihren Stack-Trace auf stderr drucken und die JVM wird enden. –

+0

Ich verwendete "throws Exception" nur für das Testprogramm, um es klein und einfach zu halten. Auch "UTF8" und "UTF-8" verhalten sich auf die gleiche Weise. – multiholle

+0

Ich habe das Problem gefunden: Ich habe http://launch4j.sourceforge.net/ verwendet, um das Jar unter Windows zu starten, was das Verhalten ändert. Jetzt benutze ich eine Fledermaus-Datei und alles ist in Ordnung :) – multiholle

0

Versuchen Sie stattdessen "UTF-8".

1

Faustregel, wenn Codierung Probleme Debuggen: Wenn Sie nicht-us-ascii Buchstaben in Stringliterale haben, versuchen, sie zu ersetzen durch Unicode entweicht (das heißt BAST\u00d6\u00d6\u00dc\u00dc\u00c4\u00c4). Wenn das Problem nicht mehr auftritt, liegt ein Fehler bei der Quellen-/Compilercodierung vor.

Zum Beispiel kann das beschriebene Verhalten passieren, wenn Ihre Quellcodierung Windows-1252 ist, während die Compilercodierung UTF-8 ist.

2

In dem JVM-Optionen Feld auf der JRE Registerkarte in launch4j (nach Ihrer Konfigurationsdatei laden) folgendes eingeben:

-Dfile.encoding=UTF8 

Alternativ kann die gleiche Sache in einer INI-Datei für Ihre Anwendung angeben können - das sehen launch4j Dokumentation:

http://launch4j.sourceforge.net/docs.html#Additional_jvm_options

0

konfrontiert ich das gleiche Problem .. und ich löste es mit java -Dfile.encoding = UTF8 -jar CAP.jar (wobei CAP den Namen der JAR-Datei)

Ich verrückt eine Batch-Datei. öffne Textdatei, schreibe die obige Zeile und speichere sie als .bat und es sollte funktionieren

Verwandte Themen