I need to write a 'simple' util to convert from ASCII to EBCDIC?
The Ascii is coming from Java, Web and going to an AS400. I've had a google around, can't seem to find a easy solution (maybe coz there isn't one :( ). I was hoping for an opensource util or paid for util that has already been written.
Like this maybe?
Converter.convertToAscii(String textFromAS400)
Converter.convertToEBCDIC(String textFromJava)
Thanks,
Scott
Please note that a String in Java holds text in Java's native encoding. When holding an ASCII or EBCDIC "string" in memory, prior to encoding as a String, you'll have it in a byte[].
ASCII -> Java:   new String(bytes, "ASCII")
EBCDIC -> Java:  new String(bytes, "Cp1047")
Java -> ASCII:   string.getBytes("ASCII")
Java -> EBCDIC:  string.getBytes("Cp1047")
                        JTOpen, IBM's open source version of their Java toolbox has a collection of classes to access AS/400 objects, including a FileReader and FileWriter to access native AS400 text files. That may be easier to use then writing your own conversion classes.
From the JTOpen homepage:
Here are just a few of the many i5/OS and OS/400 resources you can access using JTOpen:
- Database -- JDBC (SQL) and record-level access (DDM)
 - Integrated File System
 - Program calls
 - Commands
 - Data queues
 - Data areas
 - Print/spool resources
 - Product and PTF information
 - Jobs and job logs
 - Messages, message queues, message files
 - Users and groups
 - User spaces
 - System values
 - System status
 
You should use either the Java character set Cp1047 (Java 5) or Cp500 (JDK 1.3+).
Use the String constructor: String(byte[] bytes, [int offset, int length,] String enc)
package javaapplication1;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.CharacterCodingException;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CharsetEncoder;
public class ConvertBetweenCharacterSetEncodingsWithCharBuffer {
    public static void main(String[] args) {
       //String cadena = "@@@@@@@@@@@@@@@ñâæÃÈÄóöó@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ÔÁâãÅÙÃÁÙÄ@ÄÅÂÉã@âæÉãÃÈ@@@@@@@@";
        String cadena = "ñâæÃÈÄóöó";
        System.out.println(Convert(cadena,"CP1047","ISO-8859-1"));
        cadena = "1SWCHD363";
        System.out.println(Convert(cadena,"ISO-8859-1","CP1047"));
    }
    public static String Convert (String strToConvert,String in, String out){
       try {
        Charset charset_in = Charset.forName(out);
        Charset charset_out = Charset.forName(in);
        CharsetDecoder decoder = charset_out.newDecoder();
        CharsetEncoder encoder = charset_in.newEncoder();
        CharBuffer uCharBuffer = CharBuffer.wrap(strToConvert);
        ByteBuffer bbuf = encoder.encode(uCharBuffer);
        CharBuffer cbuf = decoder.decode(bbuf);
        String s = cbuf.toString();
        //System.out.println("Original String is: " + s);
        return s;
    } catch (CharacterCodingException e) {
        //System.out.println("Character Coding Error: " + e.getMessage());
        return "";
    }
}
}
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With