`
acf
  • 浏览: 35159 次
文章分类
社区版块
存档分类
最新评论

java版本的escape和unescape函数

 
阅读更多

有时候我们在处理页面提交过来的中文产生乱码不容易解决时,比如页面选择了别的编码,而 AJAX 是用的 UTF-8 字符集,我们可以对要发送到服务器的中文用 Javascript 的escape 函数进行编码,然而 Java 中又没有相应的 unescape 函数。

而且 Java 中的 java.net.URLDecoder/java.net.URLEncoder 也对应不上 javascript 的encodeURI/decodeURI 和 encodeURIComponent/decodeURIComponent 函数。

所以我去网上找来了一段能够与 Javascript 的escape/unescape 函数的代码。

 

[java] view plaincopy
  1. public class EscapeUnescape {      
  2.           
  3.     public static String escape(String src) {      
  4.         int i;      
  5.         char j;      
  6.         StringBuffer tmp = new StringBuffer();      
  7.         tmp.ensureCapacity(src.length() * 6);      
  8.         for (i = 0; i < src.length(); i++) {      
  9.             j = src.charAt(i);      
  10.             if (Character.isDigit(j) || Character.isLowerCase(j)      
  11.                     || Character.isUpperCase(j))      
  12.                 tmp.append(j);      
  13.             else if (j < 256) {      
  14.                 tmp.append("%");      
  15.                 if (j < 16)      
  16.                     tmp.append("0");      
  17.                 tmp.append(Integer.toString(j, 16));      
  18.             } else {      
  19.                 tmp.append("%u");      
  20.                 tmp.append(Integer.toString(j, 16));      
  21.             }      
  22.         }      
  23.         return tmp.toString();      
  24.     }      
  25.      
  26.     public static String unescape(String src) {      
  27.         StringBuffer tmp = new StringBuffer();      
  28.         tmp.ensureCapacity(src.length());      
  29.         int lastPos = 0, pos = 0;      
  30.         char ch;      
  31.         while (lastPos < src.length()) {      
  32.             pos = src.indexOf("%", lastPos);      
  33.             if (pos == lastPos) {      
  34.                 if (src.charAt(pos + 1) == 'u') {      
  35.                     ch = (char) Integer.parseInt(src      
  36.                             .substring(pos + 2, pos + 6), 16);      
  37.                     tmp.append(ch);      
  38.                     lastPos = pos + 6;      
  39.                 } else {      
  40.                     ch = (char) Integer.parseInt(src      
  41.                             .substring(pos + 1, pos + 3), 16);      
  42.                     tmp.append(ch);      
  43.                     lastPos = pos + 3;      
  44.                 }      
  45.             } else {      
  46.                 if (pos == -1) {      
  47.                     tmp.append(src.substring(lastPos));      
  48.                     lastPos = src.length();      
  49.                 } else {      
  50.                     tmp.append(src.substring(lastPos, pos));      
  51.                     lastPos = pos;      
  52.                 }      
  53.             }      
  54.         }      
  55.         return tmp.toString();      
  56.     }      
  57.      
  58.     public static void main(String[] args) {      
  59.         String tmp = "中文";      
  60.         System.out.println("testing escape : " + tmp);      
  61.         tmp = escape(tmp);      
  62.         System.out.println(tmp);      
  63.         System.out.println("testing unescape :" + tmp);      
  64.         System.out.println(unescape("%u6211%u4eec"));      
  65.     }      
  66.    

 

分享到:
评论

相关推荐

    java实现js的escape和unescape

    JavaScript中的`escape()`和`unescape()`函数就是用于对URL进行编码和解码的经典方法。然而,在不同的编程环境下,比如Java,实现这些功能就显得尤为重要。下面,我们将深入探讨如何在Java中实现JavaScript的`escape...

    Java实现JS中的escape和UNescape代码分享

    总结来说,Java虽然没有内置的 `escape` 和 `unescape` 函数,但通过自定义函数,我们可以实现与JavaScript中类似的功能。同时,对于字符编码的转换,Java提供了强大的支持,如上述的 `isoToGB` 和 `isoToUTF` 方法...

    Java文本字符编码解码操作类 Escape.java源代码.rar

    Escape.java源代码是专门设计用于处理文本字符的编码和解码操作的一个类。这个类的目标是确保无论输入字符串是否已经经过`escape()`方法编码,都能够正确地进行“解码”,从而恢复原始的文本内容。 首先,让我们...

    java和js相互base64编码解码

    在Java 8及更高版本中,已经内置了`java.util.Base64`类来支持Base64编码和解码。例如,在`Base64EnOut.java`文件中,可能会包含以下代码: ```java import java.util.Base64; public class Base64EnOut { public...

    JavaScript、JavaWeb对汉字等的编码与解码处理

    例如,unescape函数可以将“%u4E2D%u534E”格式的字符串转换回“中文”。 五、Java后台处理 在Java后台处理中,如果使用escape编码,则需要使用自定义方法来解码,例如: ```java public String unescape(String ...

    java 中文乱码 处理

    下面提供了一个简单的Java类,包括了`escape`和`unescape`两个方法。 **Escape.java** ```java public class Escape { public static String escape(String src) { int i; char j; StringBuffer tmp = new ...

    JavaScript函数小集锦

    JavaScript函数是编程语言中的核心组成部分,用于执行特定任务或实现特定功能。...在实际开发中,开发者会结合这些函数和其他JavaScript特性,如对象、循环、条件语句等,来构建功能丰富的Web应用程序。

    base64,java与JavaScript实现

    对于现代浏览器来说,可以直接使用`window.btoa()`和`window.atob()`函数来完成Base64的编码和解码。 **base64.js** 虽然题目中的文件没有给出具体的`base64.js`内容,但可以参考以下简单的实现方式: ```...

    Java实现中文字符串与unicode互转工具类

    unescape函数用于将unicode码转换回中文字符串。这个函数的实现原理是将输入的unicode码逐个处理,遇到“%”字符则将其后的十六进制数字转换回对应的unicode码值,遇到“%u”字符则将其后的十六进制数字转换回对应的...

    JSP页面中文传递参数使用escape编码

    在获取到参数值后,如果需要在页面上显示或使用原始的中文字符串,可以再次使用unescape函数进行解码。 ```java String zbName = request.getParameter("name"); String unescapedName = unescape(zbName); ``` ...

    php 正确解码javascript中通过escape编码后的字符

    标签中提到了与编码和解码相关的技术,如`javascript`的`escape`和`unescape`函数,以及PHP的相关函数。`unescape`是JavaScript中用于解码`escape`编码的字符串,但在PHP中没有直接对应的功能,因此需要自定义函数如...

    javascript and Spring3.0下载地址

    在JavaScript中,`escape()`函数和`unescape()`函数常用于此目的,而在Spring框架中,可能会在处理HTTP请求或生成响应时涉及字符串转义。然而,没有更多上下文,无法确定这个特定的“Escape.java”文件在实际项目中...

    JavaScript中的编码和解码函数

    - `unescape()` 是 `escape()` 的对应解码函数,它将编码的字符串恢复为原始格式。它能识别并解码由 `escape()` 创建的编码字符串,包括 `%uXXXX` 形式的Unicode字符。 5. **decodeURI() 函数**: - `decodeURI()...

    Java.Script].杨正华

    - **系统函数**:例如escape()、unescape()等用于URL编码解码的功能。 **1.6 浏览器内部对象** - **浏览器对象树**:介绍了浏览器对象模型(BOM),它是浏览器提供的一系列API集合。 - **navigator对象**:提供了...

    学习java开发中的特殊字符.pdf

    在JavaScript中,URL编码和解码的函数分别是`escape(String s)`和`unescape(String s)`。不过,现代JavaScript更推荐使用`encodeURIComponent()`和`decodeURIComponent()`来编码和解码URL,因为它们更全面,能正确...

    解javascript 混淆加密收藏

    Js解混淆最关键的部分: l eval或者[removed]、VBS的EXECUTE、execScript之类的可以运行js的函数 l unescape js的混淆一般有几种方法: 1. 把代码通过escape转换成hex形式的代码,让人看不懂 2. 把代码进行简单的...

    彻底解决jsp中用SmartUpload上传附件中文乱码问题实用.pdf

    这里自定义了一个`unescape()`函数,用于处理编码过的文件名: ```java public static String unescape(String src) { // ... // 解码逻辑 // ... } ``` 在JSP页面中,调用这个函数来解码文件名,并进一步处理...

    地址栏传递中文参数乱码在js里用escape转码

    当我们在Web开发中遇到URL地址栏传递中文参数出现乱码的问题时,一个常见的解决办法是使用JavaScript中的escape函数进行转码。这个函数能够将字符串中的中文字符转换为一个十六进制形式的URL编码字符串。在某些...

Global site tag (gtag.js) - Google Analytics