`

2011-08-16 18:29 JS中三种编码方式(escape,encodeURI,encodeURIComponent)

阅读更多

一 参考书 

0 http://hi.baidu.com/suofang/item/970a2ba6ea271cda5bf191ea
1  js编码http://blog.csdn.net/cnartstorm/archive/2009/06/23/4292460.aspx 
2 js 解决中文乱码函数-js中escape,encodeURI,encodeURIComponent三个函数的区别 
  http://blog.csdn.net/renhui15688/archive/2009/01/06/3710569.aspx 
二 各函数说明 
js对文字进行url编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 

A:  escape(String) 

escape函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。 
返回值:已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。 
说明:方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。其他所有的字符都会被转义序列替换。提示和注释 
提示:可以使用 unescape() 对 escape() 编码的字符串进行解码。 
注释:ECMAScript v3 反对使用该方法,应用使用 decodeURI() 和 decodeURIComponent() 替代它。 

B:encodeURI(string) 

定义:把字符串作为 URI 进行编码 
返回值: URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。 
说明: 该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。 
该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,# 
提示和注释: 提示:如果 URI 组件中含有分隔符,比如 ? 和 #,则应当使用 encodeURIComponent() 方法分别对各组件进行编码。 

C:encodeURIComponent 

返回值:URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。 
说明:该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。 
其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。 
提示和注释: 
提示:请注意 encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串)。因此 

encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号. 

三 示例 
工程,JSP页面编码使用UTF-8时,用js中的方法escape('中')进行编码,在java中要用EscapeUnescape.java进行解码,见附件,另外上传了,html,css3,W3school文档及编码的js文件,JS编码.zip 

  • JS编码比较.zip (16.2 KB)
  • 下载次数: 8
    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();
    
    	}
     
分享到:
评论

相关推荐

    JS中三种编码方式(escape,encodeURI,encodeURIComponent)

    NULL 博文链接:https://liuzidong.iteye.com/blog/829204

    javascript url几种编码方式详解

    2. encodeURI()是javascript中真正用来对URL编码的函数。编码整个URL地址,但对特殊含义的符号”;/?:@&=+$,#”,也不进行编码。对应的解码函数是decodeURI()。 3. encodeURIComponent()能编码”;/?:@&=+$,#”这些...

    【JavaScript源代码】基于网址URL中特殊字符转义编码.docx

    基于网址URL中特殊字符...Javascript中的escape,encodeURI和encodeURIComponent的区别 安全字符不同 兼容性不同 对Unicode字符的编码方式不同 适用场合不同 表单提交文档字符集会影响encodeURI吗?其他和Url编码相关

    JS对URL字符串进行编码/解码分析

    虽然escape()、encodeURI()、encodeURIComponent()三种方法都能对一些影响URL完整性的特殊 字符进行过滤。但后两者是将字符串转换为UTF-8的方式来传输,解决了页面编码不一至导致的乱码问 题。例如:发送页与接受页...

    js对字符串进行编码的方法总结(推荐)

    在用javascript对URL字符串进行编码中,虽然escape()、encodeURI()、encodeURIComponent()三种方法都能对一些影响URL完整性的特殊字符进行过滤。 但后两者是将字符串转换为UTF-8的方式来传输,解决了页面编码不一至...

    JavaScript中URL编码函数代码

    JavaScript中存在几种对URL字符串进行编码的方法:escape(),encodeURI(),以及encodeURIComponent()。这几种编码所起的作用各不相同。 escape() 方法: 采用ISO Latin字符集对指定的字符串进行编码。所有的空格符...

    js编码之encodeURIComponent使用介绍(asp,php)

    因为要新作系统,因此对于JS脚本又重新研究了一下。在对新的URL编码的时候发现,网页编码的格式对于JS的影响很大,在这里书写一点。 {var B=siteUrl+this.actionUrl+(this.... js 对文字进行编码涉及3个函数:escape

    js 处理URL实用技巧

    以下是JS下对URL进行编/解码的各种方法: escape方法:就对@*+/ A-Z 0-9 a-z这些字符不编码,其它非ASCII字符都会编码以%XX编码替换,解码使用unescape,escape 方法不能用来对“统一资源标识符”(URI) 进行编码。...

    javascript 三种编解码方式

    js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent

Global site tag (gtag.js) - Google Analytics