ASCII2NATIVE.java Source code

Java tutorial

Introduction

Here is the source code for ASCII2NATIVE.java

Source

/**
 * 
 */
//package com.exedosoft.plat.util;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

/**
 * @author Administrator
 * 
 */
public class ASCII2NATIVE {

    /**
     * 
     */
    public ASCII2NATIVE() {
        // TODO Auto-generated constructor stub
    }

    public static void main(String[] args) {
        File f = new File("c:\\mydb.script");
        File f2 = new File("c:\\mydb3.script");
        if (f.exists() && f.isFile()) {
            // convert param-file
            BufferedReader br = null;
            StringBuffer sb = new StringBuffer();
            String line;

            try {
                br = new BufferedReader(new InputStreamReader(new FileInputStream(f), "JISAutoDetect"));

                while ((line = br.readLine()) != null) {
                    System.out.println(ascii2Native(line));
                    sb.append(ascii2Native(line)).append(";\n");//.append(";\n\r")
                }

                BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f2), "utf-8"));
                out.append(sb.toString());
                out.flush();
                out.close();
            } catch (FileNotFoundException e) {
                System.err.println("file not found - " + f);
            } catch (IOException e) {
                System.err.println("read error - " + f);
            } finally {
                try {
                    if (br != null)
                        br.close();
                } catch (Exception e) {
                }
            }
        } else {
            // // convert param-data
            // System.out.print(ascii2native(args[i]));
            // if (i + 1 < args.length)
            // System.out.print(' ');
        }
    }

    /**    
      * prefix of ascii string of native character    
      */
    private static String PREFIX = "\\u";

    /**    
     * Native to ascii string. It's same as execut native2ascii.exe.    
     *     
     * @param str    
     *            native string    
     * @return ascii string    
     */
    public static String native2Ascii(String str) {
        char[] chars = str.toCharArray();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < chars.length; i++) {
            sb.append(char2Ascii(chars[i]));
        }
        return sb.toString();
    }

    /**    
     * Native character to ascii string.    
     *     
     * @param c    
     *            native character    
     * @return ascii string    
     */
    private static String char2Ascii(char c) {
        if (c > 255) {
            StringBuilder sb = new StringBuilder();
            sb.append(PREFIX);
            int code = (c >> 8);
            String tmp = Integer.toHexString(code);
            if (tmp.length() == 1) {
                sb.append("0");
            }
            sb.append(tmp);
            code = (c & 0xFF);
            tmp = Integer.toHexString(code);
            if (tmp.length() == 1) {
                sb.append("0");
            }
            sb.append(tmp);
            return sb.toString();
        } else {
            return Character.toString(c);
        }
    }

    /**    
     * Ascii to native string. It's same as execut native2ascii.exe -reverse.    
     *     
     * @param str    
     *            ascii string    
     * @return native string    
     */
    public static String ascii2Native(String str) {
        StringBuilder sb = new StringBuilder();
        int begin = 0;
        int index = str.indexOf(PREFIX);
        while (index != -1) {
            sb.append(str.substring(begin, index));
            sb.append(ascii2Char(str.substring(index, index + 6)));
            begin = index + 6;
            index = str.indexOf(PREFIX, begin);
        }
        sb.append(str.substring(begin));
        return sb.toString();
    }

    /**    
     * Ascii to native character.    
     *     
     * @param str    
     *            ascii string    
     * @return native character    
     */
    private static char ascii2Char(String str) {
        if (str.length() != 6) {
            throw new IllegalArgumentException("Ascii string of a native character must be 6 character.");
        }
        if (!PREFIX.equals(str.substring(0, 2))) {
            throw new IllegalArgumentException("Ascii string of a native character must start with \"\\u\".");
        }
        String tmp = str.substring(2, 4);
        int code = Integer.parseInt(tmp, 16) << 8;
        tmp = str.substring(4, 6);
        code += Integer.parseInt(tmp, 16);
        return (char) code;
    }

}