UTL_URL包提供转换URL中的非法字符和保留字符的方法。
表 1. HTTP函数和存储过程
函数/存储过程  | 返回类型  | 说明  | 
ESCAPE(url, escape reserved chars, url_charset)  | VARCHAR2  | 使用ESCAPE函数转换URL中的非法字符和保留字符。  | 
UNESCAPE(url, url charset)  | VARCHAR2  | UNESCAPE函数将URL转换为其原始形式。  | 
如果对一个函数的调用包含了格式不正确的URL,则UTL_URL包将返回异常BAD_URL。
ESCAPE
使用ESCAPE函数转换URL中的非法字符和保留字符:
ESCAPE(url VARCHAR2, escape_reserved_chars BOOLEAN, url_charset VARCHAR2)保留字符将由一个百分号代替,且后面有两位为转换字符的ascii值提供的十六进制代码。
参数
参数名称  | 描述  | 
url  | url用于指定ESCAPE函数将要转换的URL。  | 
escape reserved chars  | escape_reserved_chars用于控制ESCAPE函数是否转换保留字符和非法字符,取值类型为BOOLEAN,默认值为FALSE。 
 在URL中可以使用的合法字符包括:大写字母A~Z、小写字母a~z、数字0~9、*、!、-、(、.、)、'、~、_。 在URL的某些部分中,一些字符为合法字符,但在其它部分中却为非法字符,可参见RFC 2396关于非法字符的综合性条例。一些字符示例在URL的任何部分中都是非法字符,请参见非法字符。 ESCAPE函数中可以使用的保留字符请参见保留字符,当escape_reserved_chars参数值设置为TRUE时,ESCAPE函数将对保留字符进行转换。  | 
url_charset  | url_charset用于在转换指定字符前,指定字符将要转换的目标字符集。url_charset的默认值为ISO-8859-1,当url_charset设置为NULL时 ,字符不会被转换。  | 
表 2. 非法字符
非法字符  | 转换顺序  | 
a blank space ( )  | %20  | 
curly braces ({ or })  | %7b和%7d  | 
hash mark (#)  | %23  | 
表 3. 保留字符
保留字符  | 转换顺序  | 
ampersand (&)  | %5C  | 
at sign (@)  | %25  | 
colon (:)  | %3a  | 
comma (,)  | %2c  | 
dollar sign ($)  | %24  | 
equal sign (=)  | %3d  | 
plus sign (+)  | %2b  | 
question mark (?)  | %3f  | 
semi-colon (;)  | %3b  | 
slash (/)  | %2f  | 
示例
以下匿名代码块使用ESCAPE函数来转换URL中的空白处:
DECLARE
  result varchar2(400);
BEGIN
 result := UTL_URL.ESCAPE('http://www.example.com/Using the ESCAPE function.html');
  DBMS_OUTPUT.PUT_LINE(result);
END;转换后的URL如下所示:
http://www.example.com/Using%20the%20ESCAPE%20function.html调用ESCAPE函数时,如果将escape_reserved_chars参数值设置为TRUE,则ESCAPE函数将转换URL中的保留字符和非法字符:
DECLARE
  result varchar2(400);
BEGIN
 result := UTL_URL.ESCAPE('http://www.example.com/Using the ESCAPE function.html', TRUE);
  DBMS_OUTPUT.PUT_LINE(result);
END;显示结果如下:
http%3A%2F%2Fwww.example.com%2FUsing%20the%20ESCAPE%20function.htmlUNESCAPE
UNESCAPE函数用于删除由ESCAPE函数添加到URL中的转换字符,将URL转换为其初始格式,语法如下:
UNESCAPE(url VARCHAR2, url_charset VARCHAR2)参数
参数名称  | 描述  | 
url  | url用于指定UNESCAPE函数将要转换的URL。  | 
url_charset  | 在转换一个字符之后,此字符将假定为url_charset编码,且在返回之前,将从url_charset编码转换到数据库编码。url charset的默认值为ISO-8 85 9-1,当url_charset设置为NULL时,字符不会被转换。  | 
示例
以下匿名代码块使用了UNESCAPE函数来转换URL中的空白处:
DECLARE
  result varchar2(400);
BEGIN
 result := UTL_URL.UNESCAPE('http://www.example.com/Using%20the%20UNESCAPE%20function.html');
  DBMS_OUTPUT.PUT_LINE(result);
END;转换后的URL如下所示:
http://www.example.com/Using the UNESCAPE function.html