Mega Code Archive

 
Categories / Java / Development Class
 

ASCII 2 NATIVE

/**  *   */ //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;           }       }