精华内容
下载资源
问答
  • 主要介绍了php自定义urlencode,urldecode函数,实例分析了php字符串转码的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 很多朋友说JavaScript的decodeURI函数也可以实现,但有bug所有呢,下面看下下面的函数,经过测试使用暂时没什么问题,我在之前的文章说过,这个和php的urldecode函数根本不是一回事。下面是我根据高人的代码改写的...
  • 代码如下:‘================================================ ‘函数名:URLDecode ‘作 用:URL解码 ‘================================================ Function URLDecode(ByVal urlcode) Dim start,final,...
  • ASP中文URL解码URLDecode函数实现

    千次阅读 2018-09-18 14:04:17
    大家都知道,在asp中,我们一般都通过 Server.UrlEncode 进行url的编码,...在php中这些功能很完善,但asp中,我们是找不到Server.UrlDecode函数的,鉴于这个问题,我们就要自己写一个解码函数了,以下是一段支持中...

    大家都知道,在asp中,我们一般都通过 Server.UrlEncode 进行url的编码,这样使得一些特殊的字符能够通过链接正常访问,但当我们把这个编码后的url字符存入数据库后,有些时候需要程序读取这个url进行处理时,就需要对其进行url解码,在php中这些功能很完善,但asp中,我们是找不到Server.UrlDecode函数的,鉴于这个问题,我们就要自己写一个解码函数了,以下是一段支持中文URLDecode的Asp函数,可以基于这个函数将其写成一个类,呵呵,这里就不细说了。

    <%
    function URLDecode(strIn)
        URLDecode = ""
        Dim sl: sl = 1
        Dim tl: tl = 1
        Dim key: key = "%"
        Dim kl: kl = Len(key)
    
        sl = InStr(sl, strIn, key, 1)
        Do While sl>0
            If (tl=1 And sl<>1) Or tl<sl Then
                URLDecode = URLDecode & Mid(strIn, tl, sl-tl)
            End If
    
            Dim hh, hi, hl
            Dim a
            Select Case UCase(Mid(strIn, sl+kl, 1))
                Case "U":                  'Unicode URLEncode
                a = Mid(strIn, sl+kl+1, 4)
                URLDecode = URLDecode & ChrW("&H" & a)
                sl = sl + 6
    
                Case "E":                   'UTF-8 URLEncode
                hh = Mid(strIn, sl+kl, 2)
                a = Int("&H" & hh)          'ascii码
                If Abs(a)<128 Then
                    sl = sl + 3
                    URLDecode = URLDecode & Chr(a)
                Else
                    hi = Mid(strIn, sl+3+kl, 2)
                    hl = Mid(strIn, sl+6+kl, 2)
                    a = ("&H" & hh And &H0F) * 2 ^12 Or ("&H" & hi And &H3F) * 2 ^ 6 Or ("&H" & hl And &H3F)
                    If a<0 Then a = a + 65536
                    URLDecode = URLDecode & ChrW(a)
                    sl = sl + 9
                End If
            Case Else:                      'Asc URLEncode
                hh = Mid(strIn, sl+kl, 2)   '高位
                a = Int("&H" & hh)          'ascii码
                If Abs(a)<128 Then
                sl = sl + 3
                Else
                hi = Mid(strIn, sl+3+kl, 2) '低位
                a = Int("&H" & hh & hi)     '非ascii码
                sl = sl + 6
                End If
                URLDecode = URLDecode & Chr(a)
            End Select
    
            tl = sl
            sl = InStr(sl, strIn, key, 1)
        Loop
    
        URLDecode = URLDecode & Mid(strIn, tl)
    End function
    %>

    转载自:https://www.awaimai.com/268.html

    展开全文
  • urlencode 与urldecode 函数字符编码原理详解
                   
    中文字符编码研究系列第五期,详解 urlencode()与urldecode()函数字符编码原理,两个函数分别用于编码 URL 字符串和解码已编码的 URL 字符串,实现对中文字符的编码
    <iframe width="680" height="200" align="center,center" id="iframeu2261530_0" src="http://pos.baidu.com/bcbm?sz=680x200&amp;rdid=2261530&amp;dc=2&amp;di=u2261530&amp;dri=0&amp;dis=0&amp;dai=1&amp;ps=417x124&amp;coa=at%3D3%26rsi0%3D680%26rsi1%3D200%26pat%3D6%26tn%3DbaiduCustNativeAD%26rss1%3D%2523FFFFFF%26conBW%3D1%26adp%3D1%26ptt%3D0%26titFF%3D%2525E5%2525BE%2525AE%2525E8%2525BD%2525AF%2525E9%25259B%252585%2525E9%2525BB%252591%26titFS%3D14%26rss2%3D%2523000000%26titSU%3D0%26ptbg%3D90%26piw%3D0%26pih%3D0%26ptp%3D0&amp;dcb=BAIDU_SSP_define&amp;dtm=BAIDU_DUP_SETJSONADSLOT&amp;dvi=0.0&amp;dci=-1&amp;dpt=none&amp;tsr=0&amp;tpr=1459841801740&amp;ti=php%20urlencode()%E4%B8%8Eurldecode()%E5%87%BD%E6%95%B0%E5%AD%97%E7%AC%A6%E7%BC%96%E7%A0%81%E5%8E%9F%E7%90%86%E8%AF%A6%E8%A7%A3_php%E6%8A%80%E5%B7%A7_%E8%84%9A%E6%9C%AC%E4%B9%8B%E5%AE%B6&amp;ari=1&amp;dbv=2&amp;drs=1&amp;pcs=1239x583&amp;pss=1238x423&amp;cfv=20&amp;cpl=1&amp;chi=1&amp;cce=true&amp;cec=gb2312&amp;tlm=1459265089&amp;ltu=http%3A%2F%2Fwww.jb51.net%2Farticle%2F29067.htm&amp;ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D3tomwqNQsI-cF3sPAY8DdWcFvl-ZM9ykeMNNu_5JyU9xw1YnouAAWMYz6CFzZ_sO%26wd%3D%26eqid%3D95739723000120e30000000657036aec&amp;ecd=1&amp;psr=1239x697&amp;par=1239x658&amp;pis=-1x-1&amp;ccd=24&amp;cja=true&amp;cmi=2&amp;col=zh-CN&amp;cdo=-1&amp;tcn=1459841802&amp;qn=15bb93055a62dea4&amp;tt=1459841801661.87.558.559" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" vspace="0" hspace="0" style="border:0; vertical-align:bottom;margin:0;" allowtransparency="true"></iframe>
    其原理就是把中文字符转换为十六进制并按某种规则进行字符串组合,实现字符的编码与解编码,保证URL数据传递过程中字符的完整性和兼容性,主要讨论中文字符的编码情况。

    一,FireFox浏览器编码中文字符

    在Firefox浏览器下如果输入中文字符,将会自动实现URL编码,如下

    按下Enter键前
    php-internet-url-encode-before
    按下Enter键后
    php-internet-url-encode

    二,urlencode()函数原理

    urlencode()函数用于编码URL字符串,这里主要讨论中文字符的编码情况,

    实例如下
    复制代码 代码如下:

    echo urlencode('不要迷恋哥');//输出:%B2%BB%D2%AA%C3%D4%C1%B5%B8%E7

    urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%,了解了这个原理,可以实现自定义的URL编码函数,代码如下
    复制代码 代码如下:

    $string = "不要迷恋哥";
    $length = strlen($string);
    echo $string;
    $result = array();
    //十进制
    for($i=0;$i<$length;$i++){
    if(ord($string[$i])>127){
    $result[] = ord($string[$i]).' '.ord($string[++$i]);
    }
    }
    var_dump($result);
    //十六进制
    $strings = array();
    foreach($result as $v){
    $dec = explode(" ",$v);
    $strings[] = "%".dechex($dec[0])." "."%".dechex($dec[1]);
    }
    var_dump($strings);

    php-self-urlencode

    上面代码在[PHP实现中文字符进制转换原理分析]一文中中文字符转十六进制原理分析部分有详细讨论,通过获取汉字的各个字符再转换为十六进制,同时在每个字符前面加上一个特殊的标识符%,就实现了urlencode()函数的功能,输出结果如下
    然后对输出的结果与直接使用urlencode()编码的字符进行比较,如上:%B2%BB%D2%AA%C3%D4%C1%B5%B8%E7

    通过上面实例可知,使用urlencode()函数编码中文字符实质上就是把字符转换为十六进制再在第个字符左边加上一个特殊的标识符%

    三,urldecode()函数原理

    使用urldecode()函数解码已编码的 URL 字符串,实例如下

    echo urldecode('%B2%BB%D2%AA%C3%D4%C1%B5%B8%E7');//输出:不要迷恋哥
    urldecode()函数与urlencode()函数原理相反,用于解码已编码的 URL 字符串,其原理就是把十六进制字符串转换为中文字符,结合上面实例,同样可实现自定义函数解码字符串
    复制代码 代码如下:

    $string = '%B2%BB%D2%AA%C3%D4%C1%B5%B8%E7';
    $length = strlen($string);
    $hexs = array();
    for($i=0;$i<$length;$i++){
    if($string[$i] == '%'){
    $hexs[] = $string[++$i].$string[++$i];
    }
    }
    $num = count($hexs);
    for($i=0;$i<$num;$i++){
    echo chr(hexdec($hexs[$i])).chr(hexdec($hexs[++$i]));
    }

    上面实例代码首先按字符串的规则取出各个字符的十六进制,然后使用hexdec()函数把十六进制转换为十进制,然后再使用chr()函数把十进制转换为字符,实现十六进制转换为字符。输出结果如下

    php-self-urldecode

    四,urldecode()与urlencode()函数说明

    urlencode

    (PHP 3, PHP 4, PHP 5)
    urlencode -- 编码 URL 字符串
    说明
    string urlencode ( string str )
    返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样。由于历史原因,此编码在将空格编码为加号(+)方面与 RFC1738 编码(参见 rawurlencode())不同。此函数便于将字符串编码并将其用于 URL 的请求部分,同时它还便于将变量传递给下一页

    urldecode
    (PHP 3, PHP 4, PHP 5)
    urldecode -- 解码已编码的 URL 字符串
    说明
    string urldecode ( string str )
    解码给出的已编码字符串中的任何 %##。返回解码后的字符串。

    五,参考资源
    urlencode()说明
    urldecode()说明
               
    展开全文
  • JavaScript URLdecode函数

    2020-04-03 09:51:34
    JavaScript中urldecode有相应的函数,使用方便。但urldecode就需要一些处理,直接上代码 function UrlDecode(zipStr){ var uzipStr = ''; for (var i = 0; i < zipStr.length; i += 1) { var chr = zipStr....

    JavaScript中urldecode有相应的函数,使用方便。但urldecode就需要一些处理,直接上代码

    function UrlDecode(zipStr){ 
      var uzipStr = ''; 
      for (var i = 0; i < zipStr.length; i += 1) {
        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); 
    }
    

    以上代码其实就是把一些特殊字符做处理,主要用到String.charAt()函数,使用方法

    var str = '%e7%90%bc%e5%8f%b0%e5%8d%9a%e5%ae%a2';
    var destr = UrlDecode(str);
    console.log(destr); // Output:
    

    转自https://www.qttc.net/244_javascript_urldecode.html

    展开全文
  • 这个是 utf-8版本的 js实现 php的 urlencode() 和 urldecode()两个函数的功能。 在传送cookie的时候 在 php端实现 url编码 但要用 js来解码cookie的时候 就出现汉字不能不能识别的问题 这个 js 很好的解决
  • SQL Server Url Decode函数

    2013-10-07 14:37:00
    SQL Server Url Decode函数 CREATE FUNCTION dbo.UrlDecode(@url varchar(3072)) RETURNS varchar(3072) AS BEGIN DECLARE @count int, @c char(1), @cenc char(2), @i int, @u...
    CREATE FUNCTION dbo.UrlDecode(@url varchar(3072))
    RETURNS varchar(3072)
    AS
    BEGIN 
        DECLARE @count int, @c char(1), @cenc char(2), @i int, @urlReturn varchar(3072) 
        SET @count = Len(@url) 
        SET @i = 1 
        SET @urlReturn = '' 
        WHILE (@i <= @count) 
         BEGIN 
            SET @c = substring(@url, @i, 1) 
            IF @c LIKE '[!%]' ESCAPE '!' 
             BEGIN 
                SET @cenc = substring(@url, @i + 1, 2) 
                SET @c = CHAR(CASE WHEN SUBSTRING(@cenc, 1, 1) LIKE '[0-9]' 
                                    THEN CAST(SUBSTRING(@cenc, 1, 1) as int) 
                                    ELSE CAST(ASCII(UPPER(SUBSTRING(@cenc, 1, 1)))-55 as int) 
                                END * 16 + 
                                CASE WHEN SUBSTRING(@cenc, 2, 1) LIKE '[0-9]' 
                                    THEN CAST(SUBSTRING(@cenc, 2, 1) as int) 
                                    ELSE CAST(ASCII(UPPER(SUBSTRING(@cenc, 2, 1)))-55 as int) 
                                END) 
                SET @urlReturn = @urlReturn + @c 
                SET @i = @i + 2 
             END 
            ELSE 
             BEGIN 
                SET @urlReturn = @urlReturn + @c 
             END 
            SET @i = @i +1 
         END 
        RETURN @urlReturn
    END
    CREATE FUNCTION dbo.fnDeURL
    (
        @URL VARCHAR(8000)
    )
    RETURNS VARCHAR(8000)
    AS
    BEGIN
        DECLARE @Position INT,
            @Base CHAR(16),
            @High TINYINT,
            @Low TINYINT,
            @Pattern CHAR(21)
    
        SELECT  @Base = '0123456789abcdef',
            @Pattern = '%[%][0-9a-f][0-9a-f]%',
            @URL = REPLACE(@URL, '+', ' '),
            @Position = PATINDEX(@Pattern, @URL)
    
        WHILE @Position > 0
            SELECT  @High = CHARINDEX(SUBSTRING(@URL, @Position + 1, 1), @Base COLLATE Latin1_General_CI_AS),
                @Low = CHARINDEX(SUBSTRING(@URL, @Position + 2, 1), @Base COLLATE Latin1_General_CI_AS),
                @URL = STUFF(@URL, @Position, 3, CHAR(16 * @High + @Low - 17)),
                @Position = PATINDEX(@Pattern, @URL)
    
        RETURN  @URL
    END

     

    posted on 2013-10-07 14:37 搏击的小船 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/guanjie20/p/3412446.html

    展开全文
  • Url进行编码,前台JS需要使用这段内容,这时候就需要解码了: 代码 代码如下: /** * Url编码 **/ ShengUtils.encode = function(unzipStr){ var zipstr=””; var strSpecial=”!\”#$%&'()*+,/:;<=>?[]^`{|}~%”...
  • 很多朋友说JavaScript的decodeURI函数也可以实现,但有bug所有呢,下面看下下面的函数,经过测试使用暂时没什么问题,我在之前的文章说过,这个和php的urldecode函数根本不是一回事。下面是我根据高人的代码改写的...
  • python urldecode 函数

    千次阅读 2009-05-17 07:29:00
    版权声明请尊重原创作品。转载请保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友...那我就贴个urldecode函数:import urllibdef urldecode(query): d = {} a = query.split(&
  • function UrlDecode(str){  var ret="";  for(var i=0;i;i++)  {  var chr = str.charAt(i);  if(chr == "+")  {  ret+=" ";  }  else if(chr=="%")  {  var asc = str.substring(i+1,i+3); ...
  • 很多朋友说JavaScript的decodeURI函数也可以实现,但有bug所有呢,下面看下下面的函数,经过测试使用暂时没什么问题,我在之前的文章说过,这个和php的urldecode函数根本不是一回事。下面是我根据高人的代码改写的...
  • 但是用vc++开发过程中,需要对URL编码的字符串进行编码,也就是URLDecode函数,此代码是从网上找到的,但是对url编码字符串解码结果不太正常,稍加了一点改动,可以正常对url编码字符串解码。代码如下: #define ...
  • urldecode DELIMITER $$ DROP FUNCTION IF EXISTS `urlDecode`$$ CREATE FUNCTION `url_decode`(original_text TEXT CHARSET utf8mb4) RETURNS TEXT CHARSET utf8mb4 BEGIN DECLARE new_text TEXT DEFAULT...
  • urlencode 函数 DELIMITER ; DROP FUNCTION IF EXISTS urlencode; DELIMITER | CREATE FUNCTION urlencode (s VARCHAR(4096)) RETURNS VARCHAR(4096) DETERMINISTIC CONTAINS SQL BEGIN DECLARE c VARC
  • 在php中urldecode和urlencode是一对双胞胎,如果在url中包含了中文,urlencode函数属于必用的。为什么呢?因为中文有很多编码,简体主要有gb2312和utf-8这两种,其中主流的浏览器都默认是utf-8编码的。所以在url包含...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 827
精华内容 330
关键字:

urldecode函数