java unicode编码

  1. package zxx.newer;

  2. import java.io.UnsupportedEncodingException;

  3. /**
  4.  * 编码成unicode
  5.  * @author zhaoxin
  6.  * @version
  7.  */
  8. class Native2Ascii {

  9.     /**
  10.      * 转为ascii编码
  11.      * @param t
  12.      * @return
  13.      */
  14.     public static String n2a(String t) {
  15.     StringBuffer unicode = new StringBuffer();
  16.     char[] charAry = new char[t.length()];
  17.     for (int i = 0; i < charAry.length; i++) {
  18.         charAry[i] = (char) t.charAt(i);
  19.         unicode.append("//u" + Integer.toString(charAry[i], 16));
  20.     }
  21.     return unicode.toString();
  22.     }

  23.     /**
  24.      * ascii转为本地码
  25.      * @param theString
  26.      * @return
  27.      */
  28.     private static String a2n(String theString) {
  29.     char aChar;
  30.     int len = theString.length();
  31.     StringBuffer outBuffer = new StringBuffer(len);

  32.     for (int x = 0; x < len;) {
  33.         int nextCharLength=0;
  34.         int tempInt;
  35.         aChar = theString.charAt(x++);
  36.         if (aChar == '//') {
  37.         //此处for循环取得code长度
  38.         for(tempInt=x;;tempInt++){
  39.             if(tempInt==len || theString.charAt(tempInt)=='//'){
  40.             break;
  41.             }
  42.             else{
  43.             nextCharLength++;
  44.             }
  45.         }
  46.         nextCharLength--;
  47.         aChar = theString.charAt(x++);
  48.         if (aChar == 'u') {
  49.             // Read the xxxx
  50.             int value = 0;
  51.             for (int i = 0; i < nextCharLength; i++) {
  52.             aChar = theString.charAt(x++);
  53.             switch (aChar) {
  54.             case '0':
  55.             case '1':
  56.             case '2':
  57.             case '3':
  58.             case '4':
  59.             case '5':
  60.             case '6':
  61.             case '7':
  62.             case '8':
  63.             case '9':value = (value << 4) + aChar - '0';break;
  64.             case 'a':
  65.             case 'b':
  66.             case 'c':
  67.             case 'd':
  68.             case 'e':
  69.             case 'f':value = (value << 4) + 10 + aChar - 'a';break;
  70.             case 'A':
  71.             case 'B':
  72.             case 'C':
  73.             case 'D':
  74.             case 'E':
  75.             case 'F':value = (value << 4) + 10 + aChar - 'A';break;
  76.             default:
  77.                 throw new IllegalArgumentException("Malformed   //uxxxx or //uxx   encoding.");
  78.             }
  79.             }
  80.             outBuffer.append((char) value);
  81.         } else {
  82.             if (aChar == 't')
  83.             aChar = '/t';
  84.             else if (aChar == 'r')
  85.             aChar = '/r';
  86.             else if (aChar == 'n')
  87.             aChar = '/n';
  88.             else if (aChar == 'f')
  89.             aChar = '/f';
  90.             outBuffer.append(aChar);
  91.         }
  92.         } else
  93.         outBuffer.append(aChar);
  94.     }
  95.     return outBuffer.toString();
  96.     }
  97.     
  98.     public static void main(String[] args) throws UnsupportedEncodingException {
  99.     String ss = "暗示adsf";
  100.     System.out.println(ss + ":/n" + n2a(ss));
  101.     System.out.println("/nloadConvert:" + a2n(n2a(ss)));
  102.     }

  103. }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值