ORACLE使用UTL_URL包对字符串进行URL编码解码

  • Post author:
  • Post category:其他



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


关闭菜单