Ecco un esempio su come gestire le codifiche delle stringhe in Java, in questo esempio convertiremo una stringa unocode in una ebcdic e dopo faremo il contrario per vedere se il risultato è lo stesso(  si spera di si ovviamente :asd: )

-------
import java.nio.charset.*;
import java.nio.channels.*;
import java.nio.*;
import java.io.*;

public class Test {

public static void main(String[] args) {
   try {
    Charset charset = Charset.forName("IBM1047");// creo il set di caratteri rappresentante lo std EBCDIC

    CharsetDecoder decoder = charset.newDecoder();// creo un decodificatore da ebcdic a unicode
    CharsetEncoder encoder = charset.newEncoder();// un codificatore da unicode a ebcdic

    FileChannel chan;// un canale verso il file
    long size;// dimensioni file
    FileOutputStream fos = new FileOutputStream("test.txt");// stream verso il file
    ByteBuffer bbuf = encoder.encode(CharBuffer.wrap("Stringa qualsiasi"));// buffer di byte contentnte
                                                                             // la stringa in ebcdic
  
    chan = fos.getChannel();// ottengo il canale dello stream
    size = chan.size();// le dimensioni(del file)
    bbuf.rewind();// mi posiziono all'inizio del buffer
    chan.write(bbuf);// lo scrivo dentro test.txt tramite il canale prima creato
    chan.close();// chiudo canale
    fos.close();//  chiudo stream

    System.out.println("Dentro test.txt c'è la stringa in ebcdic\n Proviamo a riconvertirla in unicode");
    bbuf.rewind();
    CharBuffer cb = decoder.decode(bbuf);
    System.out.println(cb.toString());
    if (cb.toString().equals("Stringa qualsiasi"))
      System.out.println("Ho ottenuto la stessa!!");
  
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}
--------