全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 1892|回复: 6
打印 上一主题 下一主题

[Windows VPS] 万能的hostloc,关于url编码转换问题

[复制链接]
跳转到指定楼层
1#
发表于 2012-3-11 11:46:57 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
7#
 楼主| 发表于 2012-3-11 12:41:01 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
6#
发表于 2012-3-11 12:36:03 | 只看该作者
楼上正解啊
5#
发表于 2012-3-11 12:34:08 | 只看该作者
先找一段转换代码,如
  1. /*
  2. * GB2312转UTF8
  3. * 例:
  4. * var xx=new GB2312UTF8();
  5. * var Utf8=xx.Gb2312ToUtf8("你好");
  6. * var Gb2312=xx.Utf8ToGb2312(Utf8);
  7. * alert(Gb2312);
  8. */  
  9.   
  10. function GB2312UTF8(){  
  11.   this.Dig2Dec=function(s){  
  12.       var retV = 0;  
  13.       if(s.length == 4){  
  14.           for(var i = 0; i < 4; i ++){  
  15.               retV += eval(s.charAt(i)) * Math.pow(2, 3 - i);  
  16.           }  
  17.           return retV;  
  18.       }  
  19.       return -1;  
  20.   }   
  21.   this.Hex2Utf8=function(s){  
  22.      var retS = "";  
  23.      var tempS = "";  
  24.      var ss = "";  
  25.      if(s.length == 16){  
  26.          tempS = "1110" + s.substring(0, 4);  
  27.          tempS += "10" +  s.substring(4, 10);   
  28.          tempS += "10" + s.substring(10,16);   
  29.          var sss = "0123456789ABCDEF";  
  30.          for(var i = 0; i < 3; i ++){  
  31.             retS += "%";  
  32.             ss = tempS.substring(i * 8, (eval(i)+1)*8);  
  33.             retS += sss.charAt(this.Dig2Dec(ss.substring(0,4)));  
  34.             retS += sss.charAt(this.Dig2Dec(ss.substring(4,8)));  
  35.          }  
  36.          return retS;  
  37.      }  
  38.      return "";  
  39.   }   
  40.   this.Dec2Dig=function(n1){  
  41.       var s = "";  
  42.       var n2 = 0;  
  43.       for(var i = 0; i < 4; i++){  
  44.          n2 = Math.pow(2,3 - i);  
  45.          if(n1 >= n2){  
  46.             s += '1';  
  47.             n1 = n1 - n2;  
  48.           }  
  49.          else  
  50.           s += '0';  
  51.       }  
  52.       return s;        
  53.   }  
  54.   
  55.   this.Str2Hex=function(s){  
  56.       var c = "";  
  57.       var n;  
  58.       var ss = "0123456789ABCDEF";  
  59.       var digS = "";  
  60.       for(var i = 0; i < s.length; i ++){  
  61.          c = s.charAt(i);  
  62.          n = ss.indexOf(c);  
  63.          digS += this.Dec2Dig(eval(n));  
  64.       }  
  65.       return digS;  
  66.   }  
  67.   this.Gb2312ToUtf8=function(s1){  
  68.     var s = escape(s1);  
  69.     var sa = s.split("%");  
  70.     var retV ="";  
  71.     if(sa[0] != ""){  
  72.       retV = sa[0];  
  73.     }  
  74.     for(var i = 1; i < sa.length; i ++){  
  75.       if(sa[i].substring(0,1) == "u"){  
  76.         retV += this.Hex2Utf8(this.Str2Hex(sa[i].substring(1,5)));  
  77.         if(sa[i].length){  
  78.           retV += sa[i].substring(5);  
  79.         }  
  80.       }  
  81.       else{  
  82.         retV += unescape("%" + sa[i]);  
  83.         if(sa[i].length){  
  84.           retV += sa[i].substring(5);  
  85.         }  
  86.       }  
  87.     }  
  88.     return retV;  
  89.   }  
  90.   this.Utf8ToGb2312=function(str1){  
  91.         var substr = "";  
  92.         var a = "";  
  93.         var b = "";  
  94.         var c = "";  
  95.         var i = -1;  
  96.         i = str1.indexOf("%");  
  97.         if(i==-1){  
  98.           return str1;  
  99.         }  
  100.         while(i!= -1){  
  101.           if(i<3){  
  102.                 substr = substr + str1.substr(0,i-1);  
  103.                 str1 = str1.substr(i+1,str1.length-i);  
  104.                 a = str1.substr(0,2);  
  105.                 str1 = str1.substr(2,str1.length - 2);  
  106.                 if(parseInt("0x" + a) & 0x80 == 0){  
  107.                   substr = substr + String.fromCharCode(parseInt("0x" + a));  
  108.                 }  
  109.                 else if(parseInt("0x" + a) & 0xE0 == 0xC0){ //two byte  
  110.                         b = str1.substr(1,2);  
  111.                         str1 = str1.substr(3,str1.length - 3);  
  112.                         var widechar = (parseInt("0x" + a) & 0x1F) << 6;  
  113.                         widechar = widechar | (parseInt("0x" + b) & 0x3F);  
  114.                         substr = substr + String.fromCharCode(widechar);  
  115.                 }  
  116.                 else{  
  117.                         b = str1.substr(1,2);  
  118.                         str1 = str1.substr(3,str1.length - 3);  
  119.                         c = str1.substr(1,2);  
  120.                         str1 = str1.substr(3,str1.length - 3);  
  121.                         var widechar = (parseInt("0x" + a) & 0x0F) << 12;  
  122.                         widechar = widechar | ((parseInt("0x" + b) & 0x3F) << 6);  
  123.                         widechar = widechar | (parseInt("0x" + c) & 0x3F);  
  124.                         substr = substr + String.fromCharCode(widechar);  
  125.                 }  
  126.               }  
  127.               else {  
  128.                substr = substr + str1.substring(0,i);  
  129.                str1= str1.substring(i);  
  130.               }  
  131.               i = str1.indexOf("%");  
  132.         }  
  133.   
  134.         return substr+str1;  
  135.   }  
  136. }
复制代码
然后用JS改数值再提交form。
4#
 楼主| 发表于 2012-3-11 12:31:11 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
3#
发表于 2012-3-11 11:51:33 | 只看该作者
我也曾困扰过
2#
发表于 2012-3-11 11:51:03 | 只看该作者
用JS转换
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-12-2 18:30 , Processed in 0.059661 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表