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();
}
}
}
--------
Aggiungi un commento