piapia123
ja

uuencode / xxencode エンコーダ・デコーダ

Web

処理はすべてブラウザ内で完結します。データは送信されません

入力
ファイルをここにドロップすると読み込めます
出力

uuencode はメールや Usenet の時代に、バイナリをプレーンテキストに載せるために使われた符号化です。3 バイトを 4 文字で表し、各行の先頭 1 文字がその行のバイト数を示します。本ツールは uuencode・xxencode・base64 変種に対応します。エンコードでは `begin` / `end` を含む完全なテキストを出力し、そのままメールに貼ったり `.uu` ファイルとして保存できます。デコードは厳密に検証し、行頭の長さと実際の文字数が合わない場合や、アルファベット外の文字があれば何行目かを示します。黙って切り詰めることはありません。非 ASCII は UTF-8 のバイト列として扱います。すべてブラウザ内で完結します。

機能

  • 3 つの変種:uuencode・xxencode・base64 変種
  • エンコードは begin / end を含む完全なテキストを出力し、そのまま保存可能
  • デコードは厳密に検証し、問題のある行番号を示す
  • 行頭の長さと実際の文字数が合わなければエラーにし、切り詰めない
  • 0 バイトはバッククォートで表す(メールで消えない)。デコードでは空白もバッククォートも 0 として扱う
  • 1 行あたりのバイト数を調整可能(30〜60)、ファイル名も指定可能
  • デコード結果はファイル名・パーミッション・バイト数・データ行数を表示

使い方

  1. モードを選びます:エンコード / デコード
  2. 変種を選びます(uuencode / xxencode / base64)
  3. エンコードではテキストを、デコードでは uuencode の全文を貼り付けます
  4. 「コピー」で結果を取り出します

よくある質問

uuencode の各行の先頭文字は何ですか?
その行のバイト数 + 32 です。例えば `M` は 0x4D = 77 で、32 を引くと 45。この行は 45 バイトという意味です。バイト数が 0 のときはバッククォート `` ` ``(伝統的には空白の場合もあります)になり、データの終わりを示します。
0 を空白ではなくバッククォートで表すのはなぜですか?
メールやフォーラムは行末の空白をしばしば削除しますが、バッククォートは残すからです。0 を空白にすると行末のゼロが黙って消え、デコードしたファイルが数バイト短くなります。転送に耐えるためにバッククォートが選ばれました。
base64 変種は普通の Base64 と同じですか?
アルファベットは同じですが、外側の包みが違います。base64 変種(`begin-base64 … ====`)は uuencode ファミリーの一員で、base64 データを同じ begin/end の枠に収めるため、行単位の規則に従います。裸の Base64 にはこのような先頭行・終端行はありません。
「N 行目の先頭文字は X バイトと示していますが、実際は Y です」とは?
その行が変更されたということです。コピー時に文字が欠けたか、途中に改行が混入しています。uuencode の各行は自分の長さを宣言しているため、食い違った時点でその行全体が信用できません。短い方に合わせるような切り詰めはせず、明確にエラーにします。

関連ツール