A-A+
js URLdecode()与urlencode方法支持中文解码
下面来介绍在js中来利用urlencode对中文编码与接受到数据后利用URLdecode()对编码进行解码,有需要学习的机友可参考参考,代码如下:
- <script language="vbscript">
- Function str2asc(strstr)
- str2asc = hex(asc(strstr))
- End Function
- Function asc2str(ascasc)
- asc2str = chr(ascasc)
- End Function
- </script>
- <script language="javascript" type="text/javascript">
- function UrlEncode(str){
- var ret="";
- var strSpecial="!"#$%&'()*+,/:;<=>?[]^`{|}~%";
- for(var i=0;i<str.length;i++){
- var chr = str.charAt(i);
- var c=str2asc(chr);
- if(parseInt("0x"+c) > 0x7f){
- ret+="%"+c.slice(0,2)+"%"+c.slice(-2);
- }else{
- if(chr==" ")
- ret+="+";
- else if(strSpecial.indexOf(chr)!=-1)
- ret+="%"+c.toString(16);
- else
- ret+=chr;
- }
- }
- return ret;
- }
- </script>
用这样的办法调用,代码如下:
- <script language="javascript" type="text/javascript">
- alert(UrlEncode("孙毓波大好人"));
- </script>
解码办法,代码如下:
- function UrlDecode(zipStr){
- var uzipStr="";
- for(var i=0;i<zipStr.length;i++){
- var chr = zipStr.charAt(i);
- if(chr == "+"){
- uzipStr+=" ";
- }else if(chr=="%"){
- var asc = zipStr.substring(i+1,i+3);
- if(parseInt("0x"+asc)>0x7f){
- uzipStr+=decodeURI("%"+asc.toString()+zipStr.substring(i+3,i+9).toString());
- i+=8;
- }else{
- uzipStr+=AsciiToString(parseInt("0x"+asc));
- i+=2;
- }
- }else{
- uzipStr+= chr;
- }
- }
- return uzipStr;
- }
- function StringToAscii(str){
- return str.charCodeAt(0).toString(16);
- }
- function AsciiToString(asccode){
- return String.fromCharCode(asccode);
- }
用法,使用方法,代码如下:
- var str = '%e7%90%bc%e5%8f%b0%e5%8d%9a%e5%ae%a2';
- var destr = UrlDecode(str);
- alert(destr);