uuencode() 関数

uuencode()関数は、UNIX の UUencode フォーマットを使ってバイナリ値を ASCII にエンコードする。

このエンコードでは、バイナリー値が 32 以上の範囲の ASCII 文字コードに変換されます。 歴史的には、uuencode は E メール転送用にファイルをエンコードするために使用されてきました。 uudecode() 関数は、uuencode() 関数とは逆の処理を実行して、元のバイナリー・ファイルを正確に再作成します。

uuencode() 関数のアルゴリズムは、以下のタスクを実行します。
  1. バイナリー値を 3 バイト (24 ビット) のグループに分割します。最後のグループが 3 バイトに満たない場合は、バイナリー値の最後に 0 を必要なだけ追加して 3 バイトになるようにします。
  2. 24 ビットを各 6 ビットの 4 グループに分割します。 これにより、0 から 63 の範囲にある 4 つの 10 進数ができます。
  3. それぞれの数値に 10 進数の 32 を加え、32 (スペース) から 95 (アンダースコアー) の範囲の ASCII 文字を生成します。
ステップ1は、入力値hatの各文字がどのようにバイトに処理されるかを以下の表で示す。
表1. uuencode()関数のアルゴリズム・タスク(その1
値タイプ 入力文字 入力文字 入力文字
元の ASCII 入力 h a t
ASCII デシマル 104 97 116
ASCII バイナリー (8 ビット) 01101000 01100001 01110100

ステップ23は以下の表で示されている。 上の表の 3 つの 8 ビット ASCII バイナリー値が、下の表の 1 行目にある 4 つの 6 ビット・バイナリー値に変換されます。

表2 uuencode()関数のアルゴリズム・タスク、パートII
値タイプ 入力値 入力値 入力値 入力値
6 ビット・バイナリー 011010 000110 000101 110100
対応するデシマル 26 6 5 52
デシマル + 32 58 38 37 84
UUencode 形式 : & % T

構文

uuencode 関数の構文は次のとおりです。
varchar = uuencode(varchar input);
nvarchar = uuencode(nvarchar input);

input の値には、エンコードするバイナリー値を指定します。

戻り

この関数は、エンコードしたストリングを返します。

uuencode() 関数と uudecode() 関数では、begin/end のヘッダー情報が重要です。 uuencode()関数の出力からヘッダー情報を取り除き、エンコードされた文字列を'uudecode()関数に渡すと、'uudecode()関数は以下を返すERROR: 0 : Invalid UUData.

select uuencode ('hat');
      UUENCODE
--------------------
 begin
#:&%T
'
end

(1 row)