首页 > 代码库 > native与ascii互转

native与ascii互转

package org.edujks.schoolapp.schoolbasedresearch.schoolsubject.action;public class DecodeUtil {    /**     * @declare native与ascii码互转     * @param args     * @author Lilin     */    public static void main(String[] args) {        // TODO Auto-generated method stub        String a = chinaToUnicode("飞机f发多少adsfadsfadfad");        System.out.println(a);        System.out.println(decodeUnicode(a));    }    /**     * 把中文转成Unicode码     *      * @param str     * @return     */    public static String chinaToUnicode(String str) {        String result = "";        for (int i = 0; i < str.length(); i++) {            int chr1 = (char) str.charAt(i);            if (chr1 >= 19968 && chr1 <= 171941) {// 汉字范围 \u4e00-\u9fa5 (中文)                result += "\\u" + Integer.toHexString(chr1);            } else {                result += str.charAt(i);            }        }        return result;    }    /**     * 判断是否为中文字符     *      * @param c     * @return     */    public static boolean isChinese(char c) {        Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);        if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS                || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS                || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A                || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION                || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION                || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {            return true;        }        return false;    }    /***     * 转码     *      * @param theString     * @return     *      * @time 2012-6-13 下午5:54:34 TODO     */    public static String decodeUnicode(String theString) {        char aChar;        int len = theString.length();        StringBuffer outBuffer = new StringBuffer(len);        for (int x = 0; x < len;) {            aChar = theString.charAt(x++);            if (aChar == ‘\\‘) {                aChar = theString.charAt(x++);                if (aChar == ‘u‘) {                    int value = http://www.mamicode.com/0;                    for (int i = 0; i < 4; i++) {                        aChar = theString.charAt(x++);                        switch (aChar) {                        case ‘0‘:                        case ‘1‘:                        case ‘2‘:                        case ‘3‘:                        case ‘4‘:                        case ‘5‘:                        case ‘6‘:                        case ‘7‘:                        case ‘8‘:                        case ‘9‘:                            value = (value << 4) + aChar - ‘0‘;                            break;                        case ‘a‘:                        case ‘b‘:                        case ‘c‘:                        case ‘d‘:                        case ‘e‘:                        case ‘f‘:                            value = (value << 4) + 10 + aChar - ‘a‘;                            break;                        case ‘A‘:                        case ‘B‘:                        case ‘C‘:                        case ‘D‘:                        case ‘E‘:                        case ‘F‘:                            value = (value << 4) + 10 + aChar - ‘A‘;                            break;                        default:                            throw new IllegalArgumentException(                                    "Malformed   \\uxxxx   encoding.");                        }                    }                    outBuffer.append((char) value);                } else {                    if (aChar == ‘t‘)                        aChar = ‘\t‘;                    else if (aChar == ‘r‘)                        aChar = ‘\r‘;                    else if (aChar == ‘n‘)                        aChar = ‘\n‘;                    else if (aChar == ‘f‘)                        aChar = ‘\f‘;                    outBuffer.append(aChar);                }            } else                outBuffer.append(aChar);        }        return outBuffer.toString();    }}

 

native与ascii互转