有时候可能会有这么一个需求,我在后台使用:
HttpUtility.UrlEncode(str, System.Text.Encoding.UTF8);
将Url进行编码,由于JS和.Net的编码后某些字符会有一些不同,js提供的decodeURI就不能正确的解析了,
这时候就需要自己写解码方法了,
代码
<
script type
=
"
text/javascript
"
>
var Sheng = {
/* *
* Url编码
* */
encode : function (inputStr){
var resultArr = [];
var chars = " !\ " #$ %& ' ()*+,/:;<=>?[]^`{|}~%";
for(var i=0;i<inputStr.length;i++){
var tmpChar = inputStr.charAt(i);
var c = inputStr.charCodeAt(i);
if(c > 0x7E){
resultArr[i]=encodeURI(tmpChar);
}else{
if(tmpChar==" ")
resultArr[i]="+";
else if(chars.indexOf(tmpChar)!=-1)
resultArr[i]="%"+c.toString(16);
else
resultArr[i]=tmpChar;
}
}
return resultArr.join("");
},
/**
* Url解码
**/
decode:function(inputStr){
var resultArr =[];
for(var i=0;i<inputStr.length;i++){
var chr = inputStr.charAt(i);
if(chr == "+"){
resultArr[resultArr.length]=" ";
}else if(chr=="%"){
var asc = inputStr.substring(i+1,i+3);
if(parseInt("0x"+asc)>0x7f){
resultArr[resultArr.length]= decodeURI(inputStr.substring(i,i+9));
i+=8;
}else{
resultArr[resultArr.length]=String.fromCharCode(parseInt("0x"+asc));
i+=2;
}
}else{
resultArr[resultArr.length]= chr;
}
}
return resultArr.join("");
}
}
var Sheng = {
/* *
* Url编码
* */
encode : function (inputStr){
var resultArr = [];
var chars = " !\ " #$ %& ' ()*+,/:;<=>?[]^`{|}~%";
for(var i=0;i<inputStr.length;i++){
var tmpChar = inputStr.charAt(i);
var c = inputStr.charCodeAt(i);
if(c > 0x7E){
resultArr[i]=encodeURI(tmpChar);
}else{
if(tmpChar==" ")
resultArr[i]="+";
else if(chars.indexOf(tmpChar)!=-1)
resultArr[i]="%"+c.toString(16);
else
resultArr[i]=tmpChar;
}
}
return resultArr.join("");
},
/**
* Url解码
**/
decode:function(inputStr){
var resultArr =[];
for(var i=0;i<inputStr.length;i++){
var chr = inputStr.charAt(i);
if(chr == "+"){
resultArr[resultArr.length]=" ";
}else if(chr=="%"){
var asc = inputStr.substring(i+1,i+3);
if(parseInt("0x"+asc)>0x7f){
resultArr[resultArr.length]= decodeURI(inputStr.substring(i,i+9));
i+=8;
}else{
resultArr[resultArr.length]=String.fromCharCode(parseInt("0x"+asc));
i+=2;
}
}else{
resultArr[resultArr.length]= chr;
}
}
return resultArr.join("");
}
}