UTL_URL 包

为了兼容Oracle的UTL_URL系统包,对URL进行转码与解码操作。URL是一个指向网页、图片等网络资源的字符串。访问网络资源使用的是HTTP协议。例如,DM网站的URL为:http://www.dameng.com。通常,一个正确的URL字符串包含字母、数字、标点符号三种规范字符。这些字符都是非保留字。如果URL中含有非规范字符,那么就需要转码;如果URL中含有保留字符,则根据用户需要决定是否转码。

URL中可以使用的规范字符和保留字符。如下所示:

  • 规范字符包括:

[A-Z]、[a-z]、[0-9];

减号(-)、下划线(_)、句点 (.)、感叹号、波浪号 (~)、星号(*)、重音符号(')、左圆括号(()、右圆括号 () )。

  • 保留字符包括:

分号 (;)、斜线 (/)、问号 (?)、冒号 (:)、(@)、地址符 (&)、等号 (=)、加号(+)、美元符号 ($)、逗号 (,)。

32.1 相关方法

  1. UTL_URL.ESCAPE

对URL中的非法字符(及保留字符)进行转码。

语法如下:

UTL_URL.ESCAPE (

	url IN VARCHAR,

	escape_reserved_chars IN BOOLEAN DEFAULT FALSE,

	url_charset IN VARCHAR2 DEFAULT 'GBK')

RETURN VARCHAR2;

参数详解

  • url待转码的URL。
  • escape_reserved_chars指明是否转义URL的保留字符。
  • url_charset指定URL的转码格式使用的字符集。字符集包含:UTF8、GBK、BIG5、ISO_8859_9、EUC_JP、EUC_KR、KOI8R、ISO_8859_1、SQL_ASCII、GB18030、ISO_8859_11。

返回值

返回转码后的URL。

使用说明:

此存储函数转义基于RFC2396标准的URL中包含的非规范字符。

  1. UTL_URL.UNESCAPE

对URL进行解码。

语法如下:

UTL_URL.UNESCAPE (

	url IN VARCHAR,

	url_charset IN VARCHAR2 DEFAULT 'GBK'

)RETURN VARCHAR2;

参数详解

  • url待解码URL。
  • url_charset

待解码URL的编码格式使用的字符集。字符集包含:UTF8、GBK、BIG5、ISO_8859_9、EUC_JP、EUC_KR、KOI8R、ISO_8859_1、SQL_ASCII、GB18030、ISO_8859_11。

返回值

返回解码后的URL。

32.2 举例说明

使用包内的过程和函数之前,如果还未创建过系统包。请先调用系统过程创建系统包。

SP_CREATE_SYSTEM_PACKAGES (1,'UTL_URL');

第一步,对URL(http://wwwdameng.com/a url with space.html)使用UTF8字符集进行转码:

SELECT UTL_URL.ESCAPE ('http://www.dameng.com/a url with space.html', FALSE,'UTF8') FROM DUAL;

查询结果:

http://www.dameng.com/a%20url%20with%20space.html

第二步,对上面得到的URL进行解码:

SELECT UTL_URL.UNESCAPE ('http://www.dameng.com/a%20url%20with%20space.html', 'UTF8');

查询结果:

http://www.dameng.com/a url with space.html

比较可以发现,经过转码再解码后的URL与原来相同。

微信扫码
分享文档
扫一扫
联系客服