The NoteBook of EricKong

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            611 Posts :: 1 Stories :: 190 Comments :: 0 Trackbacks

          public class Conversion {

           /**
            * 將字符串轉成unicode
            *
            * @param str
            *            待轉字符串
            * @return unicode字符串
            */
           public String convert(String str) {
            str = (str == null ? "" : str);
            String tmp;
            StringBuffer sb = new StringBuffer(1000);
            char c;
            int i, j;
            sb.setLength(0);
            for (i = 0; i < str.length(); i++) {
             c = str.charAt(i);
             sb.append("\\u");
             j = (c >>> 8); // 取出高8位
             tmp = Integer.toHexString(j);
             if (tmp.length() == 1)
              sb.append("0");
             sb.append(tmp);
             j = (c & 0xFF); // 取出低8位
             tmp = Integer.toHexString(j);
             if (tmp.length() == 1)
              sb.append("0");
             sb.append(tmp);

            }
            return (new String(sb));
           }

           /**
            * 將unicode 字符串
            *
            * @param str
            *            待轉字符串
            * @return 普通字符串
            */
           public String revert(String str) {
            str = (str == null ? "" : str);
            if (str.indexOf("\\u") == -1)// 如果不是unicode碼則原樣返回
             return str;

            StringBuffer sb = new StringBuffer(1000);

            for (int i = 0; i < str.length() - 6;) {
             String strTemp = str.substring(i, i + 6);
             String value = strTemp.substring(2);
             int c = 0;
             for (int j = 0; j < value.length(); j++) {
              char tempChar = value.charAt(j);
              int t = 0;
              switch (tempChar) {
              case 'a':
               t = 10;
               break;
              case 'b':
               t = 11;
               break;
              case 'c':
               t = 12;
               break;
              case 'd':
               t = 13;
               break;
              case 'e':
               t = 14;
               break;
              case 'f':
               t = 15;
               break;
              default:
               t = tempChar - 48;
               break;
              }

              c += t * ((int) Math.pow(16, (value.length() - j - 1)));
             }
             sb.append((char) c);
             i = i + 6;
            }
            return sb.toString();
           }

           public static void main(String args[]) {
            // unicode轉中文
            String str = "\u767b\u5f55\u793e\u533a";
            Conversion con = new Conversion();
           
            System.out.println(con.revert(str));

           }

          }

          posted on 2011-05-10 19:10 Eric_jiang 閱讀(1790) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 都兰县| 冷水江市| 澳门| 福清市| 冕宁县| 云南省| 宜兰市| 新邵县| 宣化县| 南昌县| 新密市| 馆陶县| 金山区| 克什克腾旗| 广昌县| 延津县| 松潘县| 灵武市| 元谋县| 沅陵县| 鄯善县| 马公市| 浦北县| 南漳县| 新宁县| 延安市| 古浪县| 班玛县| 湖南省| 浙江省| 通海县| 漳平市| 麻阳| 枣庄市| 宾川县| 新沂市| 百色市| 陇川县| 吴旗县| 泾川县| 建水县|