urlencoder.js

来自「加密URL 对URL进行编码 就像baidu google一样」· JavaScript 代码 · 共 52 行

JS
52
字号
# language: JSVM2

/**
 * @fileoverview com.dsonet.net.UriEncoder class {@link http://www.shareidea.net/}
 * @file		UriEncoder.jsc
 * @author	DSONet
 */

package com.dsonet.net;
import com.homolo.commons.codec.GB2312Codec;
class URLEncoder(){
};
URLEncoder.encode=function (str){
	var i,c,ret="",strSpecial="!\"#$%&'()*+,/:;<=>?@[\]^`{|}~%";
	for(i=0;i<str.length;i++){
		if(str.charCodeAt(i)>=0x4e00){
			c=GB2312Codec.encode(str.charAt(i));
			ret+=("%"+c.slice(0,2)+"%"+c.slice(-2)).toUpperCase();
		}
		else{
			c=str.charAt(i);
			if(c==" ")
				ret+="+";
			else if(strSpecial.indexOf(c)!=-1)
				ret+="%"+str.charCodeAt(i).toString(16);
			else
				ret+=c;
		}
	}
	return ret;
};
URLEncoder.decode=function (str){
	var c,i,asc,ret="";
	for(i=0;i<str.length;i++){
		var c = str.charAt(i);
		if(c == "+"){
			ret+=" ";
		}else if(c=="%"){
			asc = (str.substring(i+1,i+3)).toLowerCase();
			if(parseInt("0x"+asc)>0x7f){
				ret+=GB2312Codec.decode(asc+(str.substring(i+4,i+6)).toLowerCase());
				i+=5;
			}else{
				ret+=String.fromCharCode('0x'+asc);
				i+=2;
			}
		}else{
			ret+= c;
		}
	}
	return ret;
};

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?