Quote:
However, executing this same code in Linux produces a String which is neither ASCII nor EBCDIC valid data.
|
A String is Unicode.
ASCII <-> EBCDIC conversion (I used IBM500 because the
EBCDIC Wikipedia page uses it in the example):
Code:
import java.math.*;
import java.nio.charset.*;
public class Ascii2Ebcdic {
public static byte[] conv(Charset from, Charset to, byte[] bytes) {
return new String(bytes, from).getBytes(to);
}
public static void main(String[] args) throws Exception {
Charset ascii = Charset.forName("US-ASCII");
Charset ebcdic = Charset.forName("IBM500");
byte[] abc_ascii = { 0x61, 0x62, 0x63 };
byte[] xyz_ebcdic = { (byte)0xA7, (byte)0xA8, (byte)0xA9 };
System.out.write(conv(ascii, ebcdic, abc_ascii));
System.out.write(conv(ebcdic, ascii, xyz_ebcdic));
}
}
Output (which is "abc" in EBCDIC followed by "xyz" in ASCII):
Code:
% java Ascii2Ebcdic | od -t x1
0000000 81 82 83 78 79 7a
0000006