UTL_URL包提供轉換URL中的非法字元和保留字元的方法。
| 函數/預存程序 | 傳回型別 | 說明 |
| 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時 ,字元不會被轉換。 |
| 非法字元 | 轉換順序 |
| a blank space ( ) | %20 |
| curly braces ({ or }) | %7b和%7d |
| hash mark (#) | %23 |
| 保留字元 | 轉換順序 |
| 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