银行系统中有的核心Core banking采用AS/400系统,而AS/400采用EBCDIC编码,所以渠道整合的时候就会涉及到转码的问题。避免冷僻字的问题, 采用GBK字符集
package com.ebcdic;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.LinkedList;
import java.util.Queue;
import java.util.TreeMap;
/**
*
* @author Kevin
* @since jdk1.5
*
*/
public class EbcdicGbkConverter {
final static String GBK_FILE="GBK_CVT.txt";
final static String ebcdicCharsetName="Cp1047";
private static TreeMap <Character,Integer> gbk2Ebcdic=new TreeMap<Character,Integer> ();
private static TreeMap <Integer,Character> ebcdic2Gbk=new TreeMap<Integer,Character> ();
private static char gbk2EbcdicChar[] ;
private static int gbk2EbcdicInt[];
private static char ebcdic2GbkChar[] ;
private static int ebcdic2GbkInt[];
static {
try {
initEbcdicGBKMapping();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* Initial the EBCDIC and GBK mapping
* @throws IOException
*/
private static void initEbcdicGBKMapping() throws IOException{
InputStream input=EbcdicGbkConverter.class.getResource(GBK_FILE).openStream();
BufferedReader reader=new BufferedReader(new InputStreamReader(input));
String record;
while((record=reader