UTL_ENCODEパッケージは、エンコードおよびデコード機能を提供します。
BASE64_ENCODE
BASE64_ENCODE関数は、RAW文字列またはTEXT文字列をBase64-encoded文字列に変換します。 BASE64_ENCODE関数には、次の2種類の構文を使用できます。
BASE64_ENCODE(r IN RAW)
BASE64_ENCODE(loid IN OID)
この関数は、RAW値またはオブジェクトIDを返します。
パラメーター
パラメーター | 説明 |
r | Base64-encoded文字列に変換するRAW文字列を指定します。 |
loid | Base64-encoded文字列に変換するラージオブジェクトのIDを指定します。 |
例
次の例を実行する前に、次のコマンドを実行して、印刷できない文字をエスケープし、BYTEAまたはRAW値を読み取り可能な形式で画面に表示するようにサーバーに指示する必要があります。
SET bytea_output = escape;
詳細については、「PostgreSQLコアファイル」をご参照ください。
BASE64_ENCODE関数を使用して、文字列をBase64-encoded文字列に変換します。 例:
SELECT UTL_ENCODE.BASE64_ENCODE(CAST ('abc' AS RAW));
同様の出力が返されます。
base64_encode
---------------
YWJj
(1 row)
BASE64_DECODE
BASE64_DECODE関数は、Base64-encoded文字列をBASE64_ENCODE関数によってエンコードされた元の値に変換します。 構文:
BASE64_DECODE(r IN RAW)
関数は RAW 値を返します。
パラメーター
パラメーター | 説明 |
r | BASE64_ENCODE関数を使用してエンコードされた後の文字列。 |
例
次の例を実行する前に、次のコマンドを実行して、印刷できない文字をエスケープし、BYTEAまたはRAW値を読み取り可能な形式で画面に表示するようにサーバーに指示する必要があります。
SET bytea_output = escape;
詳細については、「PostgreSQLコアファイル」をご参照ください。
BASE64_DECODE関数を使用して、Base64-encoded文字列をRAW値に変換します。
SELECT UTL_ENCODE.BASE64_DECODE(CAST ('YWJj' AS RAW));
同様の出力が返されます。
base64_decode
---------------
abc
(1 row)
MIMEHEADER_ENCODE
MIMEHEADER_ENCODE関数は、文字列をMIMEヘッダー形式に変換し、文字列をエンコードします。
MIMEHEADER_ENCODE(buf IN VARCHAR2, encode_charset IN VARCHAR2 DEFAULT NULL, encoding IN INTEGER DEFAULT NULL)
この関数はVARCHAR2値を返します。
パラメーター
パラメーター | 説明 |
buf | フォーマットおよびエンコードする文字列を指定します。 文字列はVARCHAR2値でなければなりません。 |
encode_charset | 入力文字列から変換された結果文字列に使用する文字セットを指定します。 この関数は、関数が入力文字列をフォーマットしてエンコードする前に、指定された文字セットを使用する対応する文字列に入力文字列を変換します。 デフォルト値は NULL です。 |
encoding | 文字列のエンコードに使用されるエンコードタイプを指定します。 有効な値:
説明 デフォルトでは、quoted-printableエンコーディングが使用されます。 |
例
MIMEHEADER_ENCODE関数を使用して文字列をエンコードします。 例:
SELECT UTL_ENCODE.MIMEHEADER_ENCODE('What is the date?') FROM DUAL;
同様の出力が返されます。
mimeheader_encode
------------------------------
=?UTF8?Q?What is the date??=
(1 row)
MIMEHEADER_DECODE
MIMEHEADER_DECODE関数は、MIMEHEADER_ENCODE関数によってエンコードされた値をデコードします。 構文:
MIMEHEADER_DECODE(buf IN VARCHAR2)
この関数はVARCHAR2値を返します。
パラメーター
パラメーター | 説明 |
buf | デコードする値を指定します。 値はMIMEHEADER_ENCODE関数によってエンコードされました。 |
例
MIMEHEADER_DECODE関数を使用して、MIMEHEADER_ENCODE関数によってエンコードされた文字列をデコードします。 例:
SELECT UTL_ENCODE.MIMEHEADER_DECODE('=?UTF8?Q?What is the date??=') FROM DUAL;
同様の出力が返されます。
mimeheader_decode
-------------------
What is the date?
(1 row)
QUOTED_PRINTABLE_ENCODE
QUOTED_PRINTABLE_ENCODE関数は、文字列をquoted-printable形式に変換してエンコードします。 構文:
QUOTED_PRINTABLE_ENCODE(r IN RAW)
関数は RAW 値を返します。
パラメーター
パラメーター | 説明 |
r | quoted-printable形式でエンコードする文字列を指定します。 |
例
次の例を実行する前に、次のコマンドを実行して、印刷できない文字をエスケープし、BYTEAまたはRAW値を読み取り可能な形式で画面に表示するようにサーバーに指示する必要があります。
SET bytea_output = escape;
詳細については、「PostgreSQLコアファイル」をご参照ください。
QUOTED_PRINTABLE_ENCODE関数を使用して文字列をエンコードします。 例:
SELECT UTL_ENCODE.QUOTED_PRINTABLE_ENCODE('E=mc2') FROM DUAL;
同様の出力が返されます。
quoted_printable_encode
-------------------------
E=3Dmc2
(1 row)
QUOTED_PRINTABLE_DECODE
QUOTED_PRINTABLE_DECODE関数は、エンコードされたquoted-printable文字列をRAW文字列にデコードします。 構文:
QUOTED_PRINTABLE_DECODE(r IN RAW)
関数は RAW 値を返します。
パラメーター
パラメーター | 説明 |
r | QUOTED_PRINTABLE_ENCODE関数を使用してエンコードする文字列を指定します。 文字列はRAW値です。 |
例
次の例を実行する前に、次のコマンドを実行して、印刷できない文字をエスケープし、BYTEAまたはRAW値を読み取り可能な形式で画面に表示するようにサーバーに指示する必要があります。
SET bytea_output = escape;
詳細については、「PostgreSQLコアファイル」をご参照ください。
QUOTED_PRINTABLE_DECODE関数を使用して文字列をデコードします。 例:
SELECT UTL_ENCODE.QUOTED_PRINTABLE_DECODE('E=3Dmc2') FROM DUAL;
同様の出力が返されます。
quoted_printable_decode
-------------------------
E=mc2
(1 row)
TEXT_ENCODE
TEXT_ENCODE関数は、入力文字列を指定された文字セットを使用する文字列に変換し、結果文字列をエンコードします。 構文:
TEXT_DECODE(buf IN VARCHAR2, encode_charset IN VARCHAR2 DEFAULT NULL, encoding IN PLS_INTEGER DEFAULT NULL)
この関数はVARCHAR2値を返します。
パラメーター
パラメーター | 説明 |
buf | エンコードする文字列を指定します。 |
encode_charset | 変換用に指定した文字セットを指定します。 デフォルト値は NULL です。 |
encoding | TEXT_ENCODE関数によって使用されるエンコードタイプを指定します。 有効な値:
説明 デフォルトでは、quoted-printableエンコーディングが使用されます。 |
例
TEXT_ENCODE関数を使用して文字列をエンコードします。 例:
SELECT UTL_ENCODE.TEXT_ENCODE('What is the date?', 'BIG5', UTL_ENCODE.BASE64) FROM DUAL;
同様の出力が返されます。
text_encode
--------------------------
V2hhdCBpcyB0aGUgZGF0ZT8=
(1 row)
TEXT_DECODE
TEXT_DECODE関数は、エンコードされた文字列を、TEXT_ENCODE関数によってエンコードされた対応するVARCHAR2値に変換およびデコードします。 構文:
TEXT_DECODE(buf IN VARCHAR2, encode_charset IN VARCHAR2 DEFAULT NULL, encoding IN PLS_INTEGER DEFAULT NULL)
この関数はVARCHAR2値を返します。
パラメーター
パラメーター | 説明 |
buf | TEXT_ENCODE関数を使用してエンコードされた文字列を指定します。 |
encode charset | 変換用に指定した文字セットを指定します。 デフォルト値は NULL です。 |
encoding | TEXT_DECODE関数によって使用されるエンコードタイプを指定します。 有効な値:
説明 デフォルトでは、quoted-printableエンコーディングが使用されます。 |
例
TEXT_DECODE関数を使用して文字列をデコードします。 例:
SELECT UTL_ENCODE.TEXT_DECODE('V2hhdCBpcyB0aGUgZGF0ZT8=', 'BIG5', UTL_ENCODE.BASE64) FROM DUAL;
同様の出力が返されます。
text_decode
-------------------
What is the date?
(1 row)
UUENCODE
UUENCODE関数は、RAW文字列をuuencoded文字列にエンコードします。 構文:
UUENCODE(r IN RAW, type IN INTEGER DEFAULT 1, filename IN VARCHAR2 DEFAULT NULL, permission IN VARCHAR2 DEFAULT NULL)
関数は RAW 値を返します。
パラメーター
パラメーター | 説明 |
r | uuencoded文字列に変換する文字列を指定します。 |
type | 返されるUUENCODED文字列の型を指定します。 デフォルト値:1 詳細については、「Type」をご参照ください。 |
filename | uuencoded文字列に含めるファイル名を指定します。 ファイル名を指定しない場合、UUENCODE関数はエンコードされた文字列にファイル名uuencode.txtを含めます。 |
permission | 権限モードを指定します。 デフォルト値は NULL です。 |
表 1. 型
有効値 | 定数 |
1 | complete |
2 | header_piece |
3 | middle_piece |
4 | end_piece |
例
次の例を実行する前に、次のコマンドを実行して、印刷できない文字をエスケープし、BYTEAまたはRAW値を読み取り可能な形式で画面に表示するようにサーバーに指示する必要があります。
SET bytea_output = escape;
詳細については、「PostgreSQLコアファイル」をご参照ください。
UUENCODE関数を使用して文字列をエンコードします。 例:
SELECT UTL_ENCODE.UUENCODE('What is the date?') FROM DUAL;
同様の出力が返されます。
uuencode
--------------------------------------------------------------------
begin 0 uuencode.txt\01215VAA="!I<R!T:&4@9&%T93\\`\012`\012end\012
(1 row)
UUDECODE
UUDECODE関数は、uuencoded文字列をUUENCODE関数によってエンコードされたRAW値に変換およびデコードします。 構文:
UUDECODE(r IN RAW)
関数は RAW 値を返します。
パラメーター
パラメーター | 説明 |
r | RAW値に変換するUUENCODED文字列を指定します。 |
例
次の例を実行する前に、次のコマンドを実行して、印刷できない文字をエスケープし、BYTEAまたはRAW値を読み取り可能な形式で画面に表示するようにサーバーに指示する必要があります。
SET bytea_output = escape;
詳細については、「PostgreSQLコアファイル」をご参照ください。
文字列をデコードするには、UUDECODE関数を使用します。 例:
SELECT UTL_ENCODE.UUDECODE('begin 0 uuencode.txt\01215VAA="!I<R!T:&4@9&%T93\\`\012`\012end\012') FROM DUAL;
同様の出力が返されます。
uudecode
-------------------
What is the date?
(1 row)
polar_enable_base64_decode
polar_enable_base64_decode
パラメーターをonに設定すると、BASE64_DECODE関数は自動的に入力エンコード文字列を無効な形式で識別します。 次に、関数は、エンコードされた文字列の有効な最初の部分をデコードします。 BASE64_DECODE関数の詳細については、「BASE64_DECODE」をご参照ください。
デフォルトでは、polar_enable_base64_decode
パラメーターはonに設定されています。 コンソールで値を変更できます。 詳細は、「クラスターパラメーターの設定」をご参照ください。
次のコードは、
polar_enable_base64_decode
パラメーターがonに設定されている場合に渡されるエンコード文字列の例を示しています。SELECT utl_encode.base64_decode(utl_raw.cast_to_raw('NjMzNDgwN==gNjMzNjMz'));
BASE64_DECODE関数は、エンコードされた文字列の有効な最初の部分をデコードします。 次のサンプル成功応答が返されます。
base64_decode --------------- 633480 (1 row)
次のコードは、
polar_enable_base64_decode
パラメーターがoffに設定された後に渡されるエンコードされた文字列の例を示しています。SELECT utl_encode.base64_decode(utl_raw.cast_to_raw('NjMzNDgwN==gNjMzNjMz'));
BASE64_DECODE関数は、無効な形式のエンコード文字列をデコードできません。 同様のエラー応答が返されます。
ERROR: unexpected "=" while decoding base64 sequence