`
shuany
  • 浏览: 253923 次
  • 性别: Icon_minigender_1
  • 来自: 中国
社区版块
存档分类
最新评论

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 函数的代码。

  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. }  


对 于传送后偶尔会出现乱码的中文字符串用 javascript 的 escape 编码后,传到服务器,就能用上面的方法 unescape 解码了,escape 与 encodeURI 可是不一样的。

代码摘自: java版本的escape和 unescape函数

分享到:
评论

相关推荐

    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