全部產品
Search
文件中心

PolarDB:UTL_ENCODE

更新時間:Jul 06, 2024

UTL_ENCODE包提供編碼資料及解碼資料的方法。

BASE64_ENCODE

使用BASE64_ENCODE函數可以將RAW字串或TEXT字串轉換為Base64格式的字串。BASE64_ENCODE函數提供了以下兩種文法:

  • BASE64_ENCODE(r IN RAW)
  • BASE64_ENCODE(loid IN OID)

該函數將返回RAW格式的值或OID。

參數

參數名稱描述
r用於指定將被轉換為Base64格式的RAW字串。
loid用於指定將被轉換為Base64格式的大對象的對象ID。

樣本

說明 在執行下列樣本之前,需要執行以下命令,用於指示伺服器忽略任何非輸出字元,且用可讀形式在螢幕上顯示BYTEA或RAW值:
SET bytea_output = escape;

更多資訊,請參見Postgres核心檔案

使用BASE64_ENCODE函數將一個字串轉換為Base64格式。樣本如下:

SELECT UTL_ENCODE.BASE64_ENCODE(CAST ('abc' AS RAW));
返回結果如下:
 base64_encode
---------------
 YWJj
(1 row)

BASE64_DECODE

使用BASE64_DECODE函數將會對Base64格式的字串進行解碼,轉換為由BASE64_ENCODE函數編碼的初始值。文法如下:

BASE64_DECODE(r IN RAW)

該函數將返回RAW格式的值。

參數

參數名稱描述
r由BASE64_ENCODE函數編碼的Base64格式的字串。

樣本

說明 在執行下列樣本之前,需要執行以下命令,用於指示伺服器忽略任何非輸出字元,且用可讀形式在螢幕上顯示BYTEA或RAW值:
SET bytea_output = escape;

更多資訊,請參見Postgres核心檔案

使用BASE64_DECODE函數將Base64格式字串轉換為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用於指定在編碼字串時使用的編碼類別型。您可以指定以下兩種編碼類別型:
  • 指定Q則啟用Quoted-printable編碼類別型。
  • 指定B則啟用Base-64編碼類別型。
說明 預設為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;

更多資訊,請參見Postgres核心檔案

使用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;

更多資訊,請參見Postgres核心檔案

使用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使用的編碼類別型。您可以指定以下兩種編碼類別型:
  • 指定Q則啟用Quoted-printable編碼類別型。
  • 指定B則啟用Base-64編碼類別型。
說明 預設為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函數轉換並解碼一個字串為VARCHAR2格式,此VARCHAR2格式的值最初是由TEXT_ENCODE函數編碼的。文法如下:

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使用的編碼類別型。您可以指定以下兩種編碼類別型:
  • UTL_ENCODE.QUOTED_PRINTABLE用於指定Quoted-printable編碼。
  • UTL_ENCODE.BASE64用於指定Base-64編碼。
說明 預設為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資料轉換為UUENCODE格式的編碼字串。文法如下:

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

該函數將返回RAW格式的值。

參數

參數名稱描述
r需要被轉換為UUENCODE格式的字串。
type用於指定要返回的UUENCODED字串的類型。預設為1。具體內容,請參見類型
filename指定您想要在編碼形式中內嵌檔案名稱。如果您不指定檔案名稱,UUENCODE將在編碼形式中包含uuencode .txt檔案名稱。
permission用於指定許可權模式。預設為NULL。
表 1. 類型
取值常量
1complete
2header_piece
3middle_piece
4end_piece

樣本

說明 在執行下列樣本之前,需要執行以下命令,用於指示伺服器忽略任何非輸出字元,且用可讀形式在螢幕上顯示BYTEA或RAW值:
SET bytea_output = escape;

更多資訊,請參見Postgres核心檔案

使用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函數將UUENCODE編碼字串轉換並解碼為RAW值,此RAW值最初是由UUENCODE函數編碼的。文法如下:

UUDECODE(r IN RAW)

該函數將返回RAW格式的值。

參數

參數名稱描述
r包含要被轉換為RAW值的UUENCODED字串。

樣本

說明 在執行下列樣本之前,需要執行以下命令,用於指示伺服器忽略任何非輸出字元,且用可讀形式在螢幕上顯示BYTEA或RAW值:
SET bytea_output = escape;

更多資訊,請參見Postgres核心檔案

使用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參數預設為off狀態,該參數目前無法在控制台進行修改,請前往配額中心,在配額名稱PolarDB PG BASE64_DECODE錯誤格式相容操作列,單擊申請,申請修改。
  • polar_enable_base64_decode參數設定為on後,傳入一個錯誤格式的編碼串,樣本如下:
    select utl_encode.base64_decode(utl_raw.cast_to_raw('NjMzNDgwN==gNjMzNjMz'));

    BASE64_DECODE函數將會對有效前半部分進行解碼,正常返回樣本如下:

     base64_decode  
    ----------------
     \x363333343830
    (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