Ausgabe
Ich bin auf eine Anforderung gestoßen, bei der ich eine Zeichenfolge in die EBCDIC-Codierung konvertieren und dann sortieren muss. Wir müssen es mit EBCDIC sortieren, weil die Zeichenfolge in Mainframe gehen muss. Die Zeichenfolge, die ich sortieren werde, enthält nur Buchstaben in Großbuchstaben und nur ganze Zahlen.
Ich habe etwas gegoogelt und bin dann auf den
Link von IBM gestoßen, der die Zeichen der Reihe nach aufgelistet hat
Mir wurde klar, dass die EBCDIC-Sortierung der normalen lexikografischen Java-Sortierung genau entgegengesetzt ist (zumindest für die Art von Daten, die ich verarbeiten werde).
Meine Frage ist meine Erkenntnis richtig? Wenn nicht, was ich vermisse? ODER ist ein Java-Komparator für die EBCDIC-Codierung verfügbar.
Lösung
Da der Char-Typ in Java implizit UTF-16 ist, müssen EBCDIC-Strings als Java-Byte-Arrays verglichen werden.
Beispiel:
Charset encoding = Charset.forName("IBM1047");
Comparator<String> encComparator = (s1, s2) ->
encoding.encode(s1)
.compareTo(encoding.encode(s2));
Beantwortet von – McDowell
Antwort geprüft von – Mildred Charles (FixError Admin)