Was würde Ant dazu veranlassen, 'javac' in Eclipse mit UTF-8 anstelle meines Systemstandards Cp1252 auszuführen?

8

In der letzten Woche habe ich versucht herauszufinden, warum ein Stream, der meine neu angenommene Anwendung entschlüsselt, mir einige wichtige Probleme bei der Codierung gab. Schließlich stellte ich fest, dass das Problem darin bestand, dass die JARs / WAR, die mit Ant erstellt und auf dem Server bereitgestellt wurden, mit der Java-Task mit der Codierung UTF-8 anstelle des Systemstandards CP1252 kompiliert wurden.

Dies scheint hauptsächlich dadurch verursacht zu sein, dass viele fest codierte Strings / Zeichen für diese Sonderzeichen vorhanden sind.

Dies wurde einfach durch einen der folgenden Schritte gelöst:

  • Ändern der Codierung für das Eclipse-Projekt als UTF-8, um den Byte-Code auf dem Server
  • zu finden
  • Setzen Sie die Codierung für die javac-Task auf CP1252, um die WAR-Datei so zu erstellen, dass sie dem Client-Byte-Code
  • entspricht
  • und komischerweise reicht es aus, Ant über die Eingabeaufforderung ohne zu verwenden, um eine Kodierung festzulegen.

Warum wechselt Ant in Eclipse zu UTF-8? Ist das konfigurierbar? Wo konfiguriere ich es?

System

  • Windows XP
  • Eclipse 3.5
  • Ant 1.7.1
  • Java 1.6.0_11
codeLes 17.08.2009, 23:24
quelle

3 Antworten

6

Ant, läuft von Eclipse und verwendet alle die gleichen Versionen (außer Java 1.6.0_15) behandelt meine Java-Quelldateien als Windows-1252 . Mein Arbeitsbereich und meine Projekte verwenden die Standardeinstellungen.

  

UTF-8, um den Byte-Code auf dem Server zu finden

Ich bin mir nicht sicher, was du damit meinst - du meinst sicherlich die Codierung der Quelldateien. Der Bytecode ist ein strukturierter Satz von Anweisungen; Stringliterale, die in die Klassendateien integriert sind, sind immer UTF-8 .

Ich würde Unicode-Escape-Sequenzen verwenden mache meine Dateien codierungsunabhängig. Sie können Tools wie native2ascii oder java.nio.charset API zur Unterstützung bei das.

    
McDowell 18.08.2009, 10:17
quelle
4

Wenn Ant in der Befehlszeile verwendet wird, verwendet es automatisch die Standardkodierung des Systems, die Windows-1252 auf Ihrem System zu sein scheint.

Wenn Ant von Eclipse verwendet wird, wird die lokale Codierungseigenschaft der Quelldateien / -ordner gelesen, um festzustellen, welche verwendet werden muss. Diese Eigenschaft befindet sich auf der Seite Ressource des Dialogfelds Eigenschaften , die verfügbar ist, wenn Sie mit der rechten Maustaste auf einen Quellordner klicken.

Wenn nichts angegeben ist, wird die werkseitige Standardkodierung verwendet. Es kann über den Dialog Fenster & gt; Einstellungen konfiguriert werden.

Hoffe, das hilft.

    
Chucky 01.10.2010 12:54
quelle
2

Ähnliches passiert auf meinem Computer. Es ist Windows, und die Kodierungskonfiguration für Textdateien in Eclipse ist auf den Standardwert ( Cp1252 ) eingestellt.

Ant von der Befehlszeile erzeugt keine Anpassung beim Kompilieren von Code mit "seltsamen" Zeichen (z. B. , , ) >). Aber die gleiche Ant-Aufgabe aus Eclipse heraus.

Ich musste die Ant-Aufgabe in Eclipse mit diesem Parameter in der JRE-Registerkarte konfigurieren:

%Vor%

Der javac -Teil der Ant-Aufgabe funktioniert jetzt gut.

    
Ivan Maeder 01.12.2010 12:47
quelle

Tags und Links