UTL_URL パッケージは、URL 内の無効な文字および予約文字をエスケープするメソッドを提供します。
関数/ストアドプロシージャ | 戻り値の型 | 説明 |
---|---|---|
ESCAPE(url, escape_reserved_chars, url_charset) | VARCHAR2 | URL 内の無効な文字および予約文字をエスケープします。 |
UNESCAPE(url, url_charset) | VARCHAR2 | URL を元の形式に変換します。 |
関数の呼び出しに無効な URL が含まれている場合、UTL_URL パッケージは BAD_URL 例外を返します。
ESCAPE
ESCAPE 関数は、URL 内の無効な文字および予約文字をエスケープします。 構文は次のとおりです。
ESCAPE(url VARCHAR2, escape_reserved_chars BOOLEAN, url_charset VARCHAR2)
予約文字は、パーセント記号 (%) で始まる 2 桁の 16 進コード (16 進数の値はエスケープ対象文字の ASCII 値) に置き換えられます。
パラメーター
パラメーター | 説明 |
---|---|
url | url は、UTL_URL がエスケープする URL (Uniform Resource Locator) を指定します。 |
escape_reserved_chars | escape_reserved_chars は、ESCAPE 関数に予約文字と無効な文字をエスケープするように指示するブール値です。
URL 内の有効な文字の詳細については、「表 2」をご参照ください。 一部の文字は URL のある部分で有効ですが、別の部分では無効です。 無効な文字に関連するルールの詳細については、RFC 2396 をご参照ください。 URL のどの部分でも無効と見なされる文字の例については、「表 3」をご参照ください。 ESCAPE 関数によって予約されていると見なされる文字の詳細については、「表 4」をご参照ください。 escape_reserved_chars が TRUE に設定されている場合、ESCAPE 関数は予約文字をエスケープします。 |
url_charset | url_charset は、エスケープする前に、与えられた文字をどの文字セットに変換すべきかを指定します。 url_charset が NULL の場合、文字は変換されません。 url_charset のデフォルト値は、ISO-8859-1 です。 |
英大文字 (A〜Z) | 英小文字 (a〜z) | 数字 (0〜9) |
アスタリスク (*) | 感嘆符 (!) | ハイフン (-) |
開括弧 (() | ピリオド (.) | 閉括弧 ()) |
一重引用符 (') | チルダ (~) | アンダースコア (_) |
無効な文字 | エスケープシーケンス |
---|---|
空白 ( ) | %20 |
中括弧 ({ または }) | %7B および %7D |
ハッシュマーク (#) | %23 |
予約文字 | エスケープシーケンス |
---|---|
アンパサンド (&) | %26 |
アットマーク (@) | %40 |
コロン (:) | %3A |
コンマ (,) | %2C |
ドル記号 ($) | %24 |
等号 (=) | %3D |
正符号 (+) | %2B |
疑問符 (?) | %3F |
セミコロン (;) | %3B |
スラッシュ (/) | %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_reserved_chars パラメーターに TRUE の値が含まれる場合は、次のとおりです。
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;
ESCAPE 関数は、URL の予約文字と無効な文字をエスケープします。
http%3A%2F%2Fwww.example.com%2FUsing%20the%20ESCAPE%20function.html
UNESCAPE
UNESCAPE 関数は、ESCAPE 関数によって URL に追加されたエスケープを解除し、URL を元の形式に変換します。 構文は次のとおりです。
UNESCAPE(url VARCHAR2, url_charset VARCHAR2)
パラメーター
パラメーター | 説明 |
---|---|
url | url は、UTL_URL でエスケープが解除される URL (Uniform Resource Locator) を指定します。 |
url_charset | 文字のエスケープが解除されると、その文字は url_charset でエンコードされていると見なされます。 文字が返される前に、文字は url_charset エンコードからデータベースエンコードに変換されます。 url_charset が NULL の場合、文字は変換されません。 url_charset のデフォルト値は ISO-8859-1 です。 |
例
次の匿名ブロックでは、ESCAPE 関数を使用して空白がエスケープされた 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