JAVA转化Unicode编码

  1 public class UnicodeUtil {
  2 
  3     //编码
  4     public static String encode(String string) {
  5         StringBuilder sbr = new StringBuilder(string.length() * 4);
  6         for (char ch : string.toCharArray()) {
  7             if (ch > 0xfff) {
  8                 sbr.append("\\u");
  9                 sbr.append(Integer.toHexString(ch).toUpperCase(java.util.Locale.ENGLISH));
 10             } else if (ch > 0xff) {
 11                 sbr.append("\\u0");
 12                 sbr.append(Integer.toHexString(ch).toUpperCase(java.util.Locale.ENGLISH));
 13             } else if (ch > 0x7f) {
 14                 sbr.append("\\u00");
 15                 sbr.append(Integer.toHexString(ch).toUpperCase(java.util.Locale.ENGLISH));
 16             } else if (ch < 32) {
 17                 switch (ch) {
 18                 case '\b':
 19                     sbr.append('\\');
 20                     sbr.append('b');
 21                     break;
 22                 case '\n':
 23                     sbr.append('\\');
 24                     sbr.append('n');
 25                     break;
 26                 case '\t':
 27                     sbr.append('\\');
 28                     sbr.append('t');
 29                     break;
 30                 case '\f':
 31                     sbr.append('\\');
 32                     sbr.append('f');
 33                     break;
 34                 case '\r':
 35                     sbr.append('\\');
 36                     sbr.append('r');
 37                     break;
 38                 default:
 39                     if (ch > 0xf) {
 40                         sbr.append("\\u00");
 41                         sbr.append(Integer.toHexString(ch).toUpperCase(java.util.Locale.ENGLISH));
 42                     } else {
 43                         sbr.append("\\u000");
 44                         sbr.append(Integer.toHexString(ch).toUpperCase(java.util.Locale.ENGLISH));
 45                     }
 46                     break;
 47                 }
 48             } else {
 49                 switch (ch) {
 50                 case '\'':
 51                     sbr.append("\\u0027");
 52                     break;
 53                 case '"':
 54                 case '\\':
 55                     sbr.append("\\");
 56                     sbr.append(ch);
 57                     break;
 58                 default:
 59                     sbr.append(ch);
 60                     break;
 61                 }
 62             }
 63         }
 64         return sbr.toString();
 65     }
 66 
 67     //解码
 68     public static String decode(String unicode) {
 69         char[] chars = unicode.toCharArray();
 70         StringBuilder buffer = new StringBuilder();
 71         for (int i = 0, len = chars.length; i < len;) {
 72             char c = chars[i++];
 73             switch (c) {
 74             case 0:
 75             case '\n':
 76             case '\r':
 77                 break;
 78             case '\\':
 79                 c = chars[i++];
 80                 switch (c) {
 81                 case 'b':
 82                     buffer.append('\b');
 83                     break;
 84                 case 't':
 85                     buffer.append('\t');
 86                     break;
 87                 case 'n':
 88                     buffer.append('\n');
 89                     break;
 90                 case 'f':
 91                     buffer.append('\f');
 92                     break;
 93                 case 'r':
 94                     buffer.append('\r');
 95                     break;
 96                 case 'u':
 97                     buffer.append((char) Integer.parseInt(new String(new char[] {//
 98                             chars[i++], chars[i++], chars[i++], chars[i++] //
 99                             }), 16));//
100                     break;
101                 case 'x':
102                     buffer.append((char) Integer.parseInt(new String(new char[] {//
103                             chars[i++], chars[i++] //
104                             }), 16));//
105                     break;
106                 default:
107                     buffer.append(c);
108                 }
109                 break;
110             default:
111                 buffer.append(c);
112             }
113         }
114         return buffer.toString();
115     }
116 
117     public static void main(String[] args) {
118         String unicode = encode("你好Unicode");
119         System.out.println(unicode);
120         System.out.println(decode(unicode));
121     }
122 }

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值