zoukankan      html  css  js  c++  java
  • 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 = 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 = '	';
                        else if (aChar == 'r')
                            aChar = '
    ';
                        else if (aChar == 'n')
                            aChar = '
    ';
                        else if (aChar == 'f')
                            aChar = 'f';
                        outBuffer.append(aChar);
                    }
                } else
                    outBuffer.append(aChar);
            }
    
            return outBuffer.toString();
    
        }
    
    }
  • 相关阅读:
    HDU1879 kruscal 继续畅通工程
    poj1094 拓扑 Sorting It All Out
    (转)搞ACM的你伤不起
    (转)女生应该找一个玩ACM的男生
    poj3259 bellman——ford Wormholes解绝负权问题
    poj2253 最短路 floyd Frogger
    Leetcode 42. Trapping Rain Water
    Leetcode 41. First Missing Positive
    Leetcode 4. Median of Two Sorted Arrays(二分)
    Codeforces:Good Bye 2018(题解)
  • 原文地址:https://www.cnblogs.com/gisblogs/p/4123499.html
Copyright © 2011-2022 走看看