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:
Warum wechselt Ant in Eclipse zu UTF-8? Ist das konfigurierbar? Wo konfiguriere ich es?
System
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.
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.
Ä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.