2016-10-26 1 views
0

zuvor eine Datei laden in Netbeans laufen und greifen die String-Einträge für den Vergleich erzeugt vorhersehbare Ergebnisse entfernt werden:NetBeans Eclipse, String-Vergleichsergebnisse werden geändert mit Bindestrichen von Strings

(Over-simpliflied zum Herzen zu erhalten das Problem) Datei. 1: UTF-8 Encoded File 2: ISO-8859-1

NetBeans Codierte

String strFromFile1 = "A - B"; String strFromFile2 = "A - B";

(strFromFile1 == strFromFile2) wird als wahr ausgewertet.

Doch nach dem Projekt bewegen Eclipse, bemerkte ich manchmal die Saiten Wert würde sich ändern, und nur für einen meiner vielen Dateien, die manchmal die dash Strippen aus (-), ohne erkennbare Muster:

ECLIPSE

String strFromFile1 = "A B"; String strFromFile2 = "A - B";

(strFromFile1 == strFromFile2) auf false ausgewertet.

Der Vergleich ist richtig, aber warum hat sich die erste Zeichenfolge geändert? Die Quelltextdateien wurden nicht geändert. Sie enthielten beide das Armaturenbrett. Die Zeichencodierung der einzelnen Dateien war jedoch unterschiedlich.

Warum ist das passiert? Warum ignoriert Eclipse bestimmte Zeichen aus einer bestimmten Datei? Bei anderen Dateien mit denselben Codierungstypen (ISO-8859-1, UTF-8) trat dieses Problem nicht auf.

Antwort

0

Ich vermutete, dass das Problem mit NetBeans vs Eclipse Environment Character Encoding zu tun hatte.

Das Ändern der Ausführungskonfiguration auf Ausführen als> Weitere> Codierung> UTF-8 hatte jedoch keine Auswirkungen auf das Problem.

Die Einstellung in Eclipse am Allgemeinen Ebene geändert werden mußte:

Fenster> Einstellungen> Textdatei Encoding> Andere> UTF-8

Nach Änderung dieser Einstellung war die Frage aufgelöst, und alle Tests, die Zeichenfolgenvergleiche verwenden, wurden wie erwartet übergeben (wie in NetBeans vor der Migration zu Eclipse).

+0

Beachten Sie, dass die Verwendung von '==', um Zeichenfolgen zu vergleichen ** nicht ** im Allgemeinen arbeiten, lesen Sie http://stackoverflow.com/q/513832/2670892 –

+0

Ja, natürlich. Ich vereinfachte die Erklärung. Aber ich habe tatsächlich eine benutzerdefinierte DeepEquals-Funktion verwendet, die nach Nullwerten sucht und die equals() -Methode verwendet. – TinkerTenorSoftwareGuy

Verwandte Themen