博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中的escape,unescape方法
阅读量:6452 次
发布时间:2019-06-23

本文共 3086 字,大约阅读时间需要 10 分钟。

hot3.png

类似JavaScript中的escape() 和unescape() 转码方法 

package my.tools;    public class EscapeUnescape {      public static String escape(String src) {          int i;          char j;          StringBuffer tmp = new StringBuffer();          tmp.ensureCapacity(src.length() * 6);          for (i = 0; i < src.length(); i++) {              j = src.charAt(i);              if (Character.isDigit(j) || Character.isLowerCase(j)                      || Character.isUpperCase(j))                  tmp.append(j);              else if (j < 256) {                  tmp.append("%");                  if (j < 16)                      tmp.append("0");                  tmp.append(Integer.toString(j, 16));              } else {                  tmp.append("%u");                  tmp.append(Integer.toString(j, 16));              }          }          return tmp.toString();      }        public static String unescape(String src) {          StringBuffer tmp = new StringBuffer();          tmp.ensureCapacity(src.length());          int lastPos = 0, pos = 0;          char ch;          while (lastPos < src.length()) {              pos = src.indexOf("%", lastPos);              if (pos == lastPos) {                  if (src.charAt(pos + 1) == 'u') {                      ch = (char) Integer.parseInt(src                              .substring(pos + 2, pos + 6), 16);                      tmp.append(ch);                      lastPos = pos + 6;                  } else {                      ch = (char) Integer.parseInt(src                              .substring(pos + 1, pos + 3), 16);                      tmp.append(ch);                      lastPos = pos + 3;                  }              } else {                  if (pos == -1) {                      tmp.append(src.substring(lastPos));                      lastPos = src.length();                  } else {                      tmp.append(src.substring(lastPos, pos));                      lastPos = pos;                  }              }          }          return tmp.toString();      }        /**        * @disc 对字符串重新编码        * @param src        * @return         */      public static String isoToGB(String src) {          String strRet = null;          try {              strRet = new String(src.getBytes("ISO_8859_1"), "GB2312");          } catch (Exception e) {            }          return strRet;      }        /**        * @disc 对字符串重新编码        * @param src        * @return         */      public static String isoToUTF(String src) {          String strRet = null;          try {              strRet = new String(src.getBytes("ISO_8859_1"), "UTF-8");          } catch (Exception e) {            }          return strRet;      }        public static void main(String[] args) {          String tmp = "中文";          System.out.println("testing escape : " + tmp);          tmp = escape(tmp);          System.out.println(tmp);          System.out.println("testing unescape :" + tmp);          System.out.println(unescape("%u6211%u4eec"));          System.out.println(isoToUTF(tmp));      }  }

 

转载于:https://my.oschina.net/iyinghui/blog/1793932

你可能感兴趣的文章
1.每次按一下pushbutton控件,切换图片?
查看>>
Python 嵌套列表解析
查看>>
[GXOI/GZOI2019]旧词——树链剖分+线段树
查看>>
android 补间动画的实现
查看>>
2017年广东省ACM省赛(GDCPC-2017)总结
查看>>
第十届蓝桥杯B组C++题目详解和题型总结
查看>>
树的存储结构2 - 数据结构和算法42
查看>>
函数的嵌套调用
查看>>
OC中使用 static 、 extern、 const使用
查看>>
简单理解函数回调——同步回调与异步回调
查看>>
POJ 1007
查看>>
Android 多个Activity 跳转及传参
查看>>
中文文本预处理流程(带你分析每一步)
查看>>
anroid 广播
查看>>
AJAX POST&跨域 解决方案 - CORS
查看>>
如何设计企业内部的数据平台?
查看>>
关于最小生成树中的kruskal算法中判断两个点是否在同一个连通分量的方法总结...
查看>>
【译】Linux系统和性能监控(4)
查看>>
开篇,博客的申请理由
查看>>
点滴积累【C#】---C#实现上传word以流形式保存到数据库和读取数据库中的word文件。...
查看>>