UTL_ENCODE パッケージは、データをエンコードおよびデコードする機能を提供します。

表 1. UTL_ENCODE 関数とストアドプロシージャ
関数/ストアドプロシージャ 戻り値の型 説明
BASE64_DECODE(r) RAW Base64 でエンコードされた文字列を元の RAW 値に変換します。
BASE64_ENCODE(r) RAW RAW 文字列をエンコードされた Base64 値に変換します。
BASE64_ENCODE(loid) TEXT TEXT 文字列をエンコードされた Base64 値に変換します。
MIMEHEADER_DECODE(buf) VARCHAR2 エンコードされた MIMEHEADER 形式の文字列を元の値に変換します。
MIMEHEADER_ENCODE(buf, encode_charset, encoding) VARCHAR2 文字列を MIMEHEADER 形式に変換してエンコードします。
QUOTED_PRINTABLE_DECODE(r) RAW エンコードされた文字列を RAW 値に変換します。
QUOTED_PRINTABLE_ENCODE(r) RAW 入力文字列を quoted-printable 形式の RAW 値に変換します。
TEXT_DECODE(buf, encode_charset, encoding) VARCHAR2 TEXT_ENCODE でエンコードされた文字列をデコードします。
TEXT_ENCODE(buf, encode_charset, encoding) VARCHAR2 文字列をユーザー指定の文字セットに変換してから、文字列をエンコードします。
UUDECODE(r) RAW uuencode でエンコードされた文字列を RAW 値に変換します。
UUENCODE(r, type, filename, permission) RAW RAW 文字列をエンコードされた uuencode 値に変換します。

BASE64_DECODE

Base64 でエンコードされた文字列を、BASE64_ENCODE 関数でエンコードされた元の値に変換します。 構文:

BASE64_DECODE(r IN RAW)

この関数は、RAW 値を返します。

パラメーター

パラメーター 説明
r r パラメーターは、RAW 値に変換される Base64 エンコードデータを含む文字列です。

この例を使用する前に、次のコマンドを実行する必要があります。
SET bytea_output = escape;

このコマンドは、印刷不可能な文字をエスケープし、BYTEA または RAW 値を読み取り可能な形式で表示するようサーバーに指示します。 詳細については、http://www.enterprisedb.com/docs/en/9.3/pg/datatype-binary.html で『Postgres Core Documentation』をご参照ください。

次の例では、BASE64_ENCODE 関数を使用してテキスト abc を含む文字列をエンコードし、BASE64_DECODE 関数を使用して文字列をデコードします。

edb=# SELECT UTL_ENCODE.BASE64_ENCODE(CAST ('abc' AS RAW));
 base64_encode
---------------
 YWJj
(1 row)

edb=# SELECT UTL_ENCODE.BASE64_DECODE(CAST ('YWJj' AS RAW));
 base64_decode
---------------
 abc
(1 row)

BASE64_ENCODE

BASE64_ENCODE 関数は、RFC 4648 で説明されているように、Base64 形式で文字列を変換およびエンコードします。 この関数は、UTL_SMTP パッケージを使用して送信する MIME メールを作成する場合に役立ちます。 BASE64_ENCODE 関数には 2 つの構文があります。

BASE64_ENCODE(r IN RAW)

および

BASE64_ENCODE(loid IN OID)

この関数は、RAW 値または OID を返します。

パラメーター

パラメーター 説明
r r パラメーターは、Base64 に変換される RAW 文字列を指定します。
loid loid パラメーターは、Base64 に変換されるラージオブジェクトの ID を指定します。

この例を使用する前に、次のコマンドを実行する必要があります。
SET bytea_output = escape;

このコマンドは、印刷不可能な文字をエスケープし、BYTEA または RAW 値を読み取り可能な形式で表示するようサーバーに指示します。 詳細については、http://www.enterprisedb.com/docs/en/9.3/pg/datatype-binary.html で『Postgres Core Documentation』をご参照ください。

次の例では、BASE64_ENCODE 関数を使用してテキスト abc を含む文字列をエンコードし、BASE64_DECODE 関数を使用して文字列をデコードします。

edb=# SELECT UTL_ENCODE.BASE64_ENCODE(CAST ('abc' AS RAW));
 base64_encode
---------------
 YWJj
(1 row)

edb=# SELECT UTL_ENCODE.BASE64_DECODE(CAST ('YWJj' AS RAW));
 base64_decode
---------------
 abc
(1 row)

MIMEHEADER_DECODE

MIMEHEADER_DECODE 関数は、MIMEHEADER_ENCODE 関数によってエンコードされた値をデコードします。 構文:

MIMEHEADER_DECODE(buf IN VARCHAR2)

この関数は VARCHAR2 値を返します。

パラメーター

パラメーター 説明
buf buf パラメーターには、デコードされる値 (MIMEHEADER_ENCODE 関数によってエンコードされた) が含まれます。

次の例では、MIMEHEADER_ENCODE 関数を使用して文字列をエンコードし、MIMEHEADER_DECODE 関数を使用して文字列をデコードします。

edb=# SELECT UTL_ENCODE.MIMEHEADER_ENCODE('What is the date?') FROM DUAL;
      mimeheader_encode
------------------------------
 =? UTF8? Q? What is the date?? =
(1 row)

edb=# SELECT UTL_ENCODE.MIMEHEADER_DECODE('=? UTF8? Q? What is the date?? =') FROM DUAL;
 mimeheader_decode
-------------------
 What is the date?
(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 buf パラメーターには、フォーマットおよびエンコードされる文字列が含まれています。 文字列は VARCHAR2 値です。
encode_charset encode_charset パラメーターは、フォーマットおよびエンコードされる前に文字列が変換される先の文字セットを指定します。 デフォルト値は NULL です。
encoding encoding パラメーターは、文字列をエンコードするときに使用されるエンコードの種類を指定します。 次の 2 つのエンコードの種類のいずれかを指定することができます。
  • quoted-printable エンコーディングを有効にするには、Q のエンコードの種類を指定します。 値を指定しない場合、MIMEHEADER_ENCODE 関数は quoted-printable エンコーディングを使用します。
  • B のエンコードの種類を指定して、base-64 エンコーディングを有効にします。

次の例では、MIMEHEADER_ENCODE 関数を使用して文字列をエンコードし、MIMEHEADER_DECODE 関数を使用して文字列をデコードします。

edb=# SELECT UTL_ENCODE.MIMEHEADER_ENCODE('What is the date?') FROM DUAL;
      mimeheader_encode
------------------------------
 =? UTF8? Q? What is the date?? =
(1 row)

edb=# SELECT UTL_ENCODE.MIMEHEADER_DECODE('=? UTF8? Q? What is the date?? =') FROM DUAL;
 mimeheader_decode
-------------------
 What is the date?
(1 row)

QUOTED_PRINTABLE_DECODE

QUOTED_PRINTABLE_DECODE 関数は、エンコードされた quoted-printable 文字列をデコードされた RAW 文字列に変換します。 構文:

QUOTED_PRINTABLE_DECODE(r IN RAW)

この関数は、RAW 値を返します。

パラメーター

パラメーター 説明
r r パラメーターには、デコードされるエンコードされた文字列が含まれています。 文字列は、QUOTED_PRINTABLE_ENCODE 関数によってエンコードされた RAW 値です。

この例を使用する前に、次のコマンドを実行する必要があります。
SET bytea_output = escape;

このコマンドは、印刷不可能な文字をエスケープし、BYTEA または RAW 値を読み取り可能な形式で表示するようサーバーに指示します。 詳細については、http://www.enterprisedb.com/docs/en/9.3/pg/datatype-binary.html で『Postgres Core Documentation』をご参照ください。

次の例では、最初に文字列をエンコードしてからデコードします。

edb=# SELECT UTL_ENCODE.QUOTED_PRINTABLE_ENCODE('E=mc2') FROM DUAL;  quoted_printable_encode
-------------------------
 E=3Dmc2
(1 row)

edb=# SELECT UTL_ENCODE.QUOTED_PRINTABLE_DECODE('E=3Dmc2') FROM DUAL;
 quoted_printable_decode
-------------------------
 E=mc2
(1 row)

QUOTED_PRINTABLE_ENCODE

QUOTED_PRINTABLE_ENCODE 関数は、文字列を quoted-printable 形式に変換およびエンコードします。 構文:

QUOTED_PRINTABLE_ENCODE(r IN RAW)

この関数は、RAW 値を返します。

パラメーター

パラメーター 説明
r r パラメーターには、quoted-printable 形式でエンコードされる文字列 (RAW 値) が含まれます。

この例を使用する前に、次のコマンドを実行する必要があります。
SET bytea_output = escape;
					

このコマンドは、印刷不可能な文字をエスケープし、BYTEA または RAW 値を読み取り可能な形式で表示するようサーバーに指示します。 詳細については、http://www.enterprisedb.com/docs/en/9.3/pg/datatype-binary.html で『Postgres Core Documentation』をご参照ください。

次の例では、最初に文字列をエンコードしてからデコードします。

edb=# SELECT UTL_ENCODE.QUOTED_PRINTABLE_ENCODE('E=mc2') FROM DUAL;  quoted_printable_encode
-------------------------
 E=3Dmc2
(1 row)

edb=# SELECT UTL_ENCODE.QUOTED_PRINTABLE_DECODE('E=3Dmc2') FROM DUAL;
 quoted_printable_decode
-------------------------
 E=mc2
(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 buf パラメーターには、TEXT_ENCODE 関数によってエンコードされた元の値に変換されるエンコードされた文字列が含まれています。
encode_charset encode_charset パラメーターは、エンコード前に文字列が変換される先の文字セットを指定します。 デフォルト値は NULL です。
encoding encoding パラメーターは、TEXT_DECODE 関数で使用されるエンコードの種類を指定します。 次の 2 つのエンコードの種類のいずれかを指定することができます。
  • UTL_ENCODE.BASE64 は、Base64 エンコーディングを指定します。
  • UTL_ENCODE.QUOTED_PRINTABLE は、引用された印刷可能なエンコードを指定します。 これは、デフォルトのエンコードの種類です。

次の例では、TEXT_ENCODE 関数を使用して文字列をエンコードしてから、TEXT_DECODE 関数を使用して文字列をデコードします。

edb=# SELECT UTL_ENCODE.TEXT_ENCODE('What is the date?', 'BIG5', UTL_ENCODE.BASE64) FROM DUAL;
       text_encode
--------------------------
 V2hhdCBpcyB0aGUgZGF0ZT8=
(1 row)

edb=# SELECT UTL_ENCODE.TEXT_DECODE('V2hhdCBpcyB0aGUgZGF0ZT8=', 'BIG5', UTL_ENCODE.BASE64) FROM DUAL;
    text_decode
-------------------
 What is the date?
(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 buf パラメーターにはエンコードされた文字列が含まれています。その文字列は指定された文字セットに変換され、TEXT_ENCODE 関数によってエンコードされます。
encode_charset encode_charset パラメーターは、エンコード前に値が変換される先の文字セットを指定します。 デフォルト値は NULL です。
encoding encoding パラメーターは、TEXT_ENCODE 関数で使用されるエンコードの種類を指定します。 次の 2 つのエンコードの種類のいずれかを指定することができます。
  • UTL_ENCODE.BASE64 は、Base64 エンコーディングを指定します。
  • UTL_ENCODE.QUOTED_PRINTABLE は、引用された印刷可能なエンコードを指定します。 これは、デフォルトのエンコードの種類です。

次の例では、TEXT_ENCODE 関数を使用して文字列をエンコードしてから、TEXT_DECODE 関数を使用して文字列をデコードします。

edb=# SELECT UTL_ENCODE.TEXT_ENCODE('What is the date?', 'BIG5', UTL_ENCODE.BASE64) FROM DUAL;
       text_encode
--------------------------
 V2hhdCBpcyB0aGUgZGF0ZT8=
(1 row)

edb=# SELECT UTL_ENCODE.TEXT_DECODE('V2hhdCBpcyB0aGUgZGF0ZT8=', 'BIG5', UTL_ENCODE.BASE64) FROM DUAL;
    text_decode
-------------------
 What is the date?
(1 row)

UUDECODE

UUDECODE 関数は、uuencode エンコードされた文字列を、UUENCODE 関数によって最初にエンコードされた RAW 値に変換およびデコードします。 構文:

UUDECODE(r IN RAW)

この関数は、RAW 値を返します。

パラメーター

パラメーター 説明
r r パラメーターには、RAW 値に変換される uuencoded 文字列が含まれています。

この例を使用する前に、次のコマンドを実行する必要があります。
SET bytea_output = escape;

このコマンドは、印刷不可能な文字をエスケープし、BYTEA または RAW 値を読み取り可能な形式で表示するようサーバーに指示します。 詳細については、http://www.enterprisedb.com/docs/en/9.3/pg/datatype-binary.html で『Postgres Core Documentation』をご参照ください。

次の例では、UUENCODE 関数を使用して文字列をエンコードしてから、UUDECODE 関数を使用して文字列をデコードします。

edb=# SET bytea_output = escape;
SET
edb=# 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)

edb=# SELECT UTL_ENCODE.UUDECODE
edb-# ('begin 0 uuencode.txt\01215VAA="! I<R! T:&4@9&%T93\\`\012`\012end\012')
edb-# FROM DUAL;
     uudecode
-------------------
 What is the date?
(1 row)

UUENCODE

UUENCODE 関数は、RAW データを uuencode 形式のエンコードされた文字列に変換します。 構文:

UUENCODE(r IN RAW, type IN INTEGER DEFAULT 1, filename IN VARCHAR2 DEFAULT NULL, permission IN VARCHAR2 DEFAULT NULL)

この関数は、RAW 値を返します。

パラメーター

パラメーター 説明
r r パラメーターには、uuencode 形式に変換される RAW 文字列が含まれます。
type type パラメーターは INTEGER 値または定数です。 この定数は、返される uuencoded 文字列の型を指定します。 デフォルト値: 1. 表 2が有効な値をリストします。
filename filename パラメーターは、エンコードされた形式に埋め込むファイル名を指定する VARCHAR2 値です。 ファイル名を指定しない場合、UUENCODE 関数はエンコードされた形式で uuencode.txt のファイル名を含めます。
permission permission パラメーターは、権限モードを指定する VARCHAR2 値です。 デフォルト値は NULL です。
表 2. The type parameter
定数
1 complete
2 header_piece
3 middle_piece
4 end_piece

この例を使用する前に、次のコマンドを実行する必要があります。
SET bytea_output = escape;

このコマンドは、印刷不可能な文字をエスケープし、BYTEA または RAW 値を読み取り可能な形式で表示するようサーバーに指示します。 詳細については、http://www.enterprisedb.com/docs/en/9.3/pg/datatype-binary.html で『Postgres Core Documentation』をご参照ください。

次の例では、UUENCODE 関数を使用して文字列をエンコードしてから、UUDECODE 関数を使用して文字列をデコードします。

edb=# SET bytea_output = escape;
SET
edb=# 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)

edb=# SELECT UTL_ENCODE.UUDECODE
edb-# ('begin 0 uuencode.txt\01215VAA="! I<R! T:&4@9&%T93\\`\012`\012end\012')
edb-# FROM DUAL;
     uudecode
-------------------
 What is the date?
(1 row)