全部產品
Search
文件中心

PolarDB:UTL_URL

更新時間:Jul 06, 2024

UTL_URL包提供轉換URL中的非法字元和保留字元的方法。

表 1. HTTP函數和預存程序
函數/預存程序傳回型別說明
ESCAPE(url, escape reserved chars, url_charset)VARCHAR2使用ESCAPE函數轉換URL中的非法字元和保留字元。
UNESCAPE(url, url charset)VARCHAR2UNESCAPE函數將URL轉換為其原始形式。
說明 如果對一個函數的調用包含了格式不正確的URL,則UTL_URL包將返回異常BAD_URL。

ESCAPE

使用ESCAPE函數轉換URL中的非法字元和保留字元:

ESCAPE(url VARCHAR2, escape_reserved_chars BOOLEAN, url_charset VARCHAR2)

保留字元將由一個百分比符號代替,且後面有兩位為轉換字元的ascii值提供的十六進位代碼。

參數

參數名稱描述
urlurl用於指定ESCAPE函數將要轉換的URL。
escape reserved charsescape_reserved_chars用於控制ESCAPE函數是否轉換保留字元和非法字元,取實值型別為BOOLEAN,預設值為FALSE。
  • 設定為FALSE時,ESCAPE函數將只轉換指定URL中的非法字元。
  • 設定為TRUE時,ESCAPE函數將轉換指定URL中的非法字元和保留字元。

在URL中可以使用的合法字元包括:大寫字母A~Z、小寫字母a~z、數字0~9、*!-(.)'~_

在URL的某些部分中,一些字元為合法字元,但在其它部分中卻為非法字元,可參見RFC 2396關於非法字元的綜合性條例。一些字元樣本在URL的任何部分中都是非法字元,請參見非法字元

ESCAPE函數中可以使用的保留字元請參見保留字元,當escape_reserved_chars參數值設定為TRUE時,ESCAPE函數將對保留字元進行轉換。

url_charseturl_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.html

UNESCAPE

UNESCAPE函數用於刪除由ESCAPE函數添加到URL中的轉換字元,將URL轉換為其初始格式,文法如下:

UNESCAPE(url VARCHAR2, url_charset VARCHAR2)

參數

參數名稱描述
urlurl用於指定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