使い方
- xxencode 形式のブロックを作成するには「エンコード」を、ブロックをデータに戻すには「デコード」を選択します。
- 完全なブロックを作成するには、「begin / end 行」をオンのままにして「ファイル名」を設定します。データ行だけが必要な場合はオフにします。
- データを入力または貼り付けるか、ファイルを開きます。結果は入力に合わせてリアルタイムに更新されます。
- 結果をコピーまたはダウンロードします。デコード時にデータがテキストでない場合は、「出力形式」で「16進数」を選択するか、ファイルをダウンロードします。
xxencode とは
xxencode は uuencode の構造をそのまま受け継ぎ、使う文字だけを変えたものです。3 バイトごとに 6 ビットの値 4 つにする点、データ行が長さを示す文字の後に最大 45 バイト分を収める点、ブロックが begin 644 name 行と end 行の間に置かれる点は変わりません。
64 個の値は、+、-、数字 0-9、大文字 A-Z、小文字 a-z の順に対応付けられます。長さを示す文字にも同じ表を使うため、45 バイトの満杯の行は h で始まり、end の前の空行は + 1 文字になります。構成が同じなので、出力サイズも uuencode と同じで、長さを示す文字と改行を含めて入力より約 38% 大きくなります。
xxencode が作られた理由
uuencode の出力には、[、]、\、^、! などの記号が多く含まれます。IBM のメインフレームは ASCII ではなく EBCDIC を使っており、これらの文字は EBCDIC のコードページごとに異なる位置にあります。ASCII と EBCDIC のネットワーク間のゲートウェイをメールが通過すると、こうした文字が誤って変換され、ファイルが壊れることがありました。
英字、数字、プラス、マイナスはどの EBCDIC コードページでも同じなので、xxencode されたテキストはどちらの方向にも正しく変換されます。後に MIME も同じ目的を達成しました。Base64 も、英字、数字と、ASCII と EBCDIC で共通のいくつかの記号だけを使います。xxencode は uuencode ほど普及せず、最終的には Base64 が両方に取って代わりました。
uuencode と xxencode の比較
| Uuencode | Xxencode | |
|---|---|---|
| 使用文字 | ASCII 32~95、0 はバッククォート | + - 0-9 A-Z a-z |
| 45 バイトの満杯の行の先頭文字 | M | h |
| end の前の最後の行 | ` | + |
| EBCDIC のゲートウェイを通しても安全 | いいえ | はい |
仕様
| 使用文字 | + - 0-9 A-Z a-z |
|---|---|
| 出力サイズ | 行頭の長さ文字を含めて約 137% |
| パディング | 1 行あたり最大 45 バイト |
| 規格 | xxencode |
| 大文字と小文字の区別 | あり |
エンコード例
| 入力 (UTF-8) | 出力 |
|---|---|
Hello, World! | begin 644 data.bin
BG4JgP4wg63RjQalY6E++
+
end |
Base64.is | begin 644 data.bin
7Ea3nNHMo9aZn
+
end |
你好 | begin 644 data.bin
4t9qUtOKx
+
end |
よくある質問
uuencode と xxencode はどう見分けますか?
h で始まります。uuencode の行には記号が含まれ、満杯の行は M で始まります。ここでのデコードが無効な文字のエラーで失敗する場合は、uuencode のページを試してください。このツールは begin 行と end 行を書き出しますか?
begin 644 行と、終わりの行を書き出します。エンコードされたデータ行だけが必要な場合は、このオプションをオフにしてください。begin 行のないブロックをデコードできますか?
はい。begin 行がない場合は、空でないすべての行をデータとしてデコードします。begin 行がある場合は、その次の行からデコードを始めて end 行で終了するため、前後のテキストは無視されます。