8.1 utl_url.escape介绍
utl_url.escape可以对字符串进行URLEncode。该作用在开发“银企直连”的某些银行中会要求
签名之后返回的字符串需要进行URL编码,编码主要处理几个字符 %2B代替+ %2F代替/ %3D代替= 返回的字符串中的换行回车要去掉 |
utl_url.escape定义
FUNCTION escape(url IN VARCHAR2 CHARACTER SET ANY_CS, escape_reserved_chars IN BOOLEAN DEFAULT FALSE, url_charset IN VARCHAR2 DEFAULT utl_http.get_body_charset) RETURN VARCHAR2 CHARACTER SET url%CHARSET; |
程序实例一
begin dbms_output.put_line( utl_url.escape('http://www.baidu.com/参数/=+/'); end; |
运行结果
http://www.baidu.com/%BF%BF/=+/ |
可以发现utl_url.escape默认只对中文字符进行URLEncode对于/ + =等不进行编码这是我们在浏览器中常见的编码方式。
程序实例二
begin dbms_output.put_line( utl_url.escape('http://www.baidu.com/参数/=+/',true)); end; |
运行结果
http%3A%2F%2Fwww.baidu.com%2F%BF%BF%2F%3D%2B%2F |
可以发现当加上一个True参数时utl_url.escape对字符串进行编码时对一些“关键字”也进行编码。该编码方式试用于POST方式提交报文时。
程序实例三
begin dbms_output.put_line( utl_url.escape('http://www.baidu.com/参数/=+/',true,'UTF8')); end; |
运行结果
http%3A%2F%2Fwww.baidu.com%2F%E5%8F%82%E6%95%B0%2F%3D%2B%2F |
第三个参数是对编码前指定编码格式,默认是按utl_http.get_body_charset 来编码的我们可以手动指定为UTF8等其他编码格式。
8.2 utl_url.unescape介绍
utl_url.unescape定义
FUNCTION unescape(url IN VARCHAR2 CHARACTER SET ANY_CS, url_charset IN VARCHAR2 DEFAULT utl_http.get_body_charset) RETURN VARCHAR2 CHARACTER SET url%CHARSET; |
程序实例一
begin dbms_output.put_line( utl_url.unescape('http%3A%2F%2Fwww.baidu.com%2F%E5%8F%82%E6%95%B0%2F%3D%2B%2F','UTF8')); end; |
运行结果
http://www.baidu.com/参数/=+/ |
如果没有指定以UTF8进行解密运行结果如下
http://www.baidu.com/°/=+/ |
转载于:https://blog.51cto.com/snans/1352365