UTL_ENCODE
UTL_ENCODE 包提供编码数据及解码数据的方法。
Function/Procedure | Return Type | Description |
---|---|---|
BASE64_DECODE(r) | RAW | Use the BASE64_DECODE function to translate a Base64 encoded string to the original RAW value. |
BASE64_ENCODE(r) | RAW | Use the BASE64_ENCODE function to translate a RAW string to an encoded Base64 value. |
BASE64_ENCODE(loid) | TEXT | Use the BASE64_ENCODE function to translate a TEXT string to an encoded Base64 value. |
MIMEHEADER_DECODE(buf) | VARCHAR2 | Use the MIMEHEADER_DECODE function to translate an encoded MIMEHEADER formatted string to it's original value. |
MIMEHEADER_ENCODE(buf, encode_charset, encoding) | VARCHAR2 | Use the MIMEHEADER_ENCODE function to convert and encode a string in MIMEHEADER format. |
QUOTED_PRINTABLE_DECODE(r) | RAW | Use the QUOTED_PRINTABLE_DECODE function to translate an encoded string to a RAW value. |
QUOTED_PRINTABLE_ENCODE(r) | RAW | Use the QUOTED_PRINTABLE_ENCODE function to translate an input string to a quoted-printable formatted RAW value. |
TEXT_DECODE(buf, encode_charset, encoding) | VARCHAR2 | Use the TEXT_DECODE function to decode a string encoded by TEXT_ENCODE. |
TEXT_ENCODE(buf, encode_charset, encoding) | VARCHAR2 | Use the TEXT_ENCODE function to translate a string to a user-specified character set, and then encode the string. |
UUDECODE(r) | RAW | Use the UUDECODE function to translate a uuencode encoded string to a RAW value. |
UUENCODE(r, type, filename, permission) | RAW | Use the UUENCODE function to translate a RAW string to an encoded uuencode value. |
BASE64 DECODE
使用BASE64_DECODE函数将Base64编码的字符串转换为最初由BASE64_ENCODE编码的初始值。语法如下:
BASE64_DECODE(r IN RAW)
这个函数返回的是一个RAW 值。
参数
参数名称 | 描述 |
---|---|
r | r 是一个包含Base64 编码的数据字符串,且这个Base64 编码的数据将被转换为RAW 形式。 |
示例
SET bytea_output = escape;
这个指令用于命令服务器忽略任何非输出字符,且用可读形式在屏幕上显示BYTEA或RAW值。更多信息,请参考Postgres核心文件,网址如下:https://www.postgresql.org/docs/11/datatype-binary.html
下列示例先编码(使用BASE64_ENCODE)一个包含文本abc的字符串,再对这个字符串进行解码(使用BASE64_ENCODE):
postgres=# SELECT UTL_ENCODE.BASE64_ENCODE(CAST ('abc' AS RAW));
base64_encode
---------------
YWJj
(1 row)
postgres=# SELECT UTL_ENCODE.BASE64_DECODE(CAST ('YWJj' AS RAW));
base64_decode
---------------
abc
(1 row)
BASE64_ENCODE
使用BASE64_ENCODE函数转换及编码Base64格式的字符串(如在RFC 4648中描述)。在您打算使用UTL_SMTP包发送邮件的情况下,BASE64_ENCODE函数在撰写MIME邮件时非常有用。BASE64_ENCODE函数有两种语法:
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值。更多信息,请参考Postgres核心文件,网址如下:https://www.postgresql.org/docs/11/datatype-binary.html
下列示例先编码(使用BASE64_ENCODE)一个包含文本abc的字符串,再对这个字符串进行解码(使用BASE64_ENCODE):
postgres=# SELECT UTL_ENCODE.BASE64_ENCODE(CAST ('abc' AS RAW));
base64_encode
---------------
YWJj
(1 row)
postgres=# 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函数解码这个字符串:
postgres=# SELECT UTL_ENCODE.MIMEHEADER_ENCODE('What is the date?') FROM DUAL;
mimeheader_encode
------------------------------
=?UTF8?Q?What is the date??=
(1 row)
postgres=# 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 用于指定在编码字符串时使用的编码类型。您可以指定以下两种编码类型:
|
示例
下列示例先使用MIMEHEADER_ENCODE函数编码一个字符串,然后再使用MIMEHEADER_DECODE函数解码这个字符串:
postgres=# SELECT UTL_ENCODE.MIMEHEADER_ENCODE('What is the date?') FROM DUAL;
mimeheader_encode
------------------------------
=?UTF8?Q?What is the date??=
(1 row)
postgres=# 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 包含将要被解码的编码字符串。这个字符串是一个RAW 值,由QUOTED_PRINTABLE_ENCODE 编码。 |
示例
SET bytea_output = escape;
这个指令用于命令服务器忽略任何非输出字符,且用可读形式在屏幕上显示BYTEA或RAW值。更多信息,请参考Postgres核心文件,网址如下:https://www.postgresql.org/docs/11/datatype-binary.html
下列示例先编码一个字符串,再对这个字符串解码:
postgres=# SELECT UTL_ENCODE.QUOTED_PRINTABLE_ENCODE('E=mc2') FROM DUAL; quoted_printable_encode
-------------------------
E=3Dmc2
(1 row)
postgres=# 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值。更多信息,请参考Postgres核心文件,网址如下:https://www.postgresql.org/docs/11/datatype-binary.html
下列示例先编码一个字符串,再对这个字符串解码:
postgres=# SELECT UTL_ENCODE.QUOTED_PRINTABLE_ENCODE('E=mc2') FROM DUAL; quoted_printable_encode
-------------------------
E=3Dmc2
(1 row)
postgres=# SELECT UTL_ENCODE.QUOTED_PRINTABLE_DECODE('E=3Dmc2') FROM DUAL;
quoted_printable_decode
-------------------------
E=mc2
(1 row)
TEXT_DECODE
使用 TEXT_DECODE 函数转换并解码一个编码的字符串为VARCHAR2值,这个VARCHAR2值最初是由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_DECODE使用的编码类型。您可以指定以下两种编码类型:
|
示例
下列示例先使用TEXT_ENCODE函数编码一个字符串,然后再使用TEXT_DECODE函数解码这个字符串:
postgres=# SELECT UTL_ENCODE.TEXT_ENCODE('What is the date?', 'BIG5', UTL_ENCODE.BASE64) FROM DUAL;
text_encode
--------------------------
V2hhdCBpcyB0aGUgZGF0ZT8=
(1 row)
postgres=# 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使用的编码类型。您可以指定以下两种编码类型:
|
示例
下列示例先使用TEXT_ENCODE函数编码一个字符串,然后再使用TEXT_DECODE函数解码这个字符串:
postgres=# SELECT UTL_ENCODE.TEXT_ENCODE('What is the date?', 'BIG5', UTL_ENCODE.BASE64) FROM DUAL;
text_encode
--------------------------
V2hhdCBpcyB0aGUgZGF0ZT8=
(1 row)
postgres=# SELECT UTL_ENCODE.TEXT_DECODE('V2hhdCBpcyB0aGUgZGF0ZT8=', 'BIG5', UTL_ENCODE.BASE64) FROM DUAL;
text_decode
-------------------
What is the date?
(1 row)
UUDECODE
使用UUDECODE函数将uuencode编码字符串转换并解码为RAW值,这个RAW值最初是由UUENCODE函数编码的。语法如下:
UUDECODE(r IN RAW)
这个函数返回的是一个RAW 值。
参数
参数名称 | 描述 |
---|---|
r | r 包含要被转换为RAW 值的uuencoded 字符串。 |
示例
SET bytea_output = escape;
这个指令用于命令服务器忽略任何非输出字符,且用可读形式在屏幕上显示BYTEA或RAW值。更多信息,请参考Postgres核心文件,网址如下:https://www.postgresql.org/docs/11/datatype-binary.html
下列示例先使用UUENCODE函数编码一个字符串,然后再使用UUDECODE函数解码这个字符串:
postgres=# SET bytea_output = escape;
SET
postgres=# 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)
postgres=# SELECT UTL_ENCODE.UUDECODE
postgres-# ('begin 0 uuencode.txt\01215VAA="!I<R!T:&4@9&%T93\\`\012`\012end\012')
postgres-# 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。 |
Value | Constant |
---|---|
1 | complete |
2 | header_piece |
3 | middle_piece |
4 | end_piece |
示例
SET bytea_output = escape;
这个指令用于命令服务器忽略任何非输出字符,且用可读形式在屏幕上显示BYTEA或RAW值。更多信息,请参考Postgres核心文件,网址如下:https://www.postgresql.org/docs/11/datatype-binary.html
下列示例先使用UUENCODE函数编码一个字符串, 然后再使用UUDECODE函数解码这个字符串:
postgres=# SET bytea_output = escape;
SET
postgres=# 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)
postgres=# SELECT UTL_ENCODE.UUDECODE
postgres-# ('begin 0 uuencode.txt\01215VAA="!I<R!T:&4@9&%T93\\`\012`\012end\012')
postgres-# FROM DUAL;
uudecode
-------------------
What is the date?
(1 row)
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论