uuencode() 関数
uuencode()関数は、UNIX の UUencode フォーマットを使ってバイナリ値を ASCII にエンコードする。
このエンコードでは、バイナリー値が 32 以上の範囲の ASCII 文字コードに変換されます。 歴史的には、uuencode は E メール転送用にファイルをエンコードするために使用されてきました。 uudecode() 関数は、uuencode() 関数とは逆の処理を実行して、元のバイナリー・ファイルを正確に再作成します。
- バイナリー値を 3 バイト (24 ビット) のグループに分割します。最後のグループが 3 バイトに満たない場合は、バイナリー値の最後に 0 を必要なだけ追加して 3 バイトになるようにします。
- 24 ビットを各 6 ビットの 4 グループに分割します。 これにより、0 から 63 の範囲にある 4 つの 10 進数ができます。
- それぞれの数値に 10 進数の 32 を加え、32 (スペース) から 95 (アンダースコアー) の範囲の ASCII 文字を生成します。
| 値タイプ | 入力文字 | 入力文字 | 入力文字 |
|---|---|---|---|
| 元の ASCII 入力 | h | a | t |
| ASCII デシマル | 104 | 97 | 116 |
| ASCII バイナリー (8 ビット) | 01101000 | 01100001 | 01110100 |
ステップ2と 3は以下の表で示されている。 上の表の 3 つの 8 ビット ASCII バイナリー値が、下の表の 1 行目にある 4 つの 6 ビット・バイナリー値に変換されます。
| 値タイプ | 入力値 | 入力値 | 入力値 | 入力値 |
|---|---|---|---|---|
| 6 ビット・バイナリー | 011010 | 000110 | 000101 | 110100 |
| 対応するデシマル | 26 | 6 | 5 | 52 |
| デシマル + 32 | 58 | 38 | 37 | 84 |
| UUencode 形式 | : | & | % | T |
構文
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)