urldecode

DROP FUNCTION IF EXISTS urldecode;


DELIMITER |


CREATE FUNCTION urldecode (s VARCHAR(4096)) RETURNS VARCHAR(4096)
DETERMINISTIC 
CONTAINS SQL 
BEGIN
       DECLARE c VARCHAR(4096) DEFAULT '';
       DECLARE pointer INT DEFAULT 1;
       DECLARE h CHAR(2);
       DECLARE h1 CHAR(1);
       DECLARE h2 CHAR(1);
       DECLARE s2 VARCHAR(4096) DEFAULT '';


       IF ISNULL(s) THEN
          RETURN NULL;
       ELSE
       SET s2 = '';
       WHILE pointer <= LENGTH(s) DO
          SET c = MID(s,pointer,1);
          IF c = '+' THEN
             SET c = ' ';
          ELSEIF c = '%' AND pointer + 2 <= LENGTH(s) THEN
             SET h1 = LOWER(MID(s,pointer+1,1));
             SET h2 = LOWER(MID(s,pointer+2,1));
             IF (h1 BETWEEN '0' AND '9' OR h1 BETWEEN 'a' AND 'f')
                 AND
                 (h2 BETWEEN '0' AND '9' OR h2 BETWEEN 'a' AND 'f') 
                 THEN
                   SET h = CONCAT(h1,h2);
                   SET pointer = pointer + 2;
                   SET c = CHAR(CONV(h,16,10));
              END IF;
          END IF;
          SET s2 = CONCAT(s2,c);
          SET pointer = pointer + 1;
       END while;
       END IF;
       RETURN s2;
END;
 
|


DELIMITER ;

URL Decode 是指将经过 URL 编码(Percent-Encoding)后的字符转换回原始形式的过程。当我们在网络上传输数据时,为了确保所有字符都能安全地通过 HTTP 协议传递,会对一些特殊字符进行编码。例如,空格会被替换成 `%20`,中文等非 ASCII 字符则会转化为其对应的 UTF-8 或其他编码格式下的十六进制表示。 当我们接收到这样的编码串后,就需要对其进行解码操作才能看到原本的数据内容。以下是几种常见的实现方式: 1. **Python**:可以利用标准库中的 `urllib.parse.unquote()` 函数来做这件事情。 ```python import urllib.parse encoded_str = "https://example.com/path?name=%E5%B0%8F%E6%98%8E&type=book" decoded_str = urllib.parse.unquote(encoded_str) print(decoded_str) # 输出 https://example.com/path?name=小明&type=book ``` 2. **JavaScript** (运行于浏览器环境中): - 使用内建全局方法 `decodeURIComponent()` ```javascript let encodedStr = 'https://example.com/path?name=%E5%B0%8F%E6%98%8E&type=book'; console.log(decodeURIComponent(encodedStr)); // 输出 https://example.com/path?name=小明&type=book ``` 3. **PHP**: - PHP 提供了专门用于此目的的函数 `urldecode()` ```php <?php $encodedStr = 'https://example.com/path?name=%E5%B0%8F%E6%98%8E&type=book'; echo urldecode($encodedStr); // 输出 https://example.com/path?name=小明&type=book ?> ``` 需要注意的是,在实际应用过程中应小心处理输入来源不明的 URL 数据以防注入攻击等问题发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值