I have come across a requirement where I need to convert a string to EBCDIC encoding and then sort it. We need to sort it with EBCDIC because the string has to go in mainframe. The string I will sort will have only alphabets in captial and integers only.
I googled it some and then I came across the link from IBM which has listed the characters in order
What I realized was that EBCDIC sorting is exactly opposite to normal java lexicographic sorting (at least for the type of data which I am going to process).
My question is my realization right ? If not what I am missing ? OR is there any java comparator available for EBCDIC encoding.
Yes there is a comparator for EBCDIC encoding.Here is the code for it.
You should not spend much time figuring out the many peculiarities of EBCDIC. Given a limited scope of your problem, a simple approach to implementing your requirements is as follows:
java.lang.String
in Java's native encoding (UTF-16)java.lang.String
in Java's native encoding (UTF-16) and produces an EBCDIC-encoded stringThis approach has an advantage that only two pieces of your code need to understand EBCDIC - the one that converts in, and the one that converts out. All other code can use Java system libraries and any libraries that you have for sorting, filtering, searching, and all other processing, without thinking about the EBCDIC encoding at all.
Since the char type is implicitly UTF-16 in Java EBCDIC strings need to be compared as Java byte arrays.
Example: