Uuencode dan Uudecode

Enkode teks, byte hex, atau file dalam format klasik Unix-to-Unix, atau dekode blok uuencode dari email lama, arsip Usenet, dan skrip kembali menjadi data aslinya.

Berjalan sepenuhnya di browser Anda. Tidak ada yang diunggah.

Cara menggunakan

  1. Pilih Enkode untuk membuat blok uuencode, atau Dekode untuk memulihkan data dari blok tersebut.
  2. Biarkan opsi Baris begin / end aktif dan isi Nama file jika hasilnya harus bisa dipakai dengan perintah uudecode. Matikan opsi tersebut untuk mendapatkan baris data saja.
  3. Ketik atau tempel masukan Anda, atau klik Buka file untuk mengenkode byte-nya.
  4. Saat mendekode, tempel seluruh blok termasuk baris begin jika ada, lalu salin hasilnya atau unduh sebagai file.

Apa itu uuencode?

Uuencode, singkatan dari Unix-to-Unix encode, berasal dari sekitar tahun 1980, ketika file disalin antarmesin Unix melalui jalur UUCP yang hanya dapat membawa teks. Uuencode mengubah setiap 3 byte menjadi empat nilai 6 bit dan menambahkan 32 pada masing-masing, sehingga menghasilkan karakter yang dapat dicetak dari spasi hingga garis bawah. Karena sistem email sering membuang spasi di akhir baris, nilai nol ditulis sebagai backtick (`) alih-alih spasi, seperti yang dilakukan alat ini.

File uuencode memiliki tata letak yang tetap:

  • Baris header begin 644 name, dengan 644 adalah mode file Unix dalam oktal (pemilik dapat membaca dan menulis, semua orang lain dapat membaca) dan name adalah file yang akan dibuat.
  • Baris data berisi hingga 45 byte masukan. Setiap baris diawali karakter panjang (32 ditambah jumlah byte, sehingga baris penuh diawali M) diikuti hingga 60 karakter hasil enkode.
  • Satu baris berisi satu backtick saja, yang berarti nol byte, lalu baris end.

Dengan karakter panjang dan jeda baris, keluarannya sekitar 38% lebih besar daripada masukan.

Uuencode saat ini

Sebelum ada MIME, uuencode adalah cara yang lazim untuk mengirim program dan gambar melalui email dan mempostingnya di Usenet. Base64 MIME menggantikannya selama tahun 1990-an: uuencode tidak dapat menyatakan tipe konten, terdapat beberapa varian yang tidak saling kompatibel, dan sebagian karakter tanda bacanya diubah oleh gateway antara sistem ASCII dan EBCDIC, itulah sebabnya xxencode diciptakan.

Data uuencode masih dapat Anda temukan di arsip email dan news, skrip shell lama, dan sistem warisan. Untuk pekerjaan baru, gunakan Base64, atau File ke Base64 untuk file utuh.

Uuencode di baris perintah dan di Python

# Shell (GNU sharutils): file masukan, lalu nama untuk baris begin
uuencode photo.jpg photo.jpg > photo.uu   # tulis blok ke photo.uu
uudecode photo.uu

# Python: satu baris berisi hingga 45 byte setiap kali
import binascii
line = binascii.b2a_uu(b'hello', backtick=True)   # satu baris uuencode
binascii.a2b_uu(line)          # b'hello'

Modul lama uu di Python dihapus pada Python 3.13, tetapi fungsi-fungsi binascii tetap tersedia.

Spesifikasi

AlfabetASCII 32 hingga 96 (spasi hingga `)
Ukuran keluaranSekitar 137% termasuk awalan baris
PaddingMaksimal 45 byte per baris
StandarPOSIX uuencode
Peka huruf besar-kecilYa

Contoh

Masukan (UTF-8)Keluaran
Hello, World!begin 644 data.bin -2&5L;&\L(%=O<FQD(0`` ` end
Base64.isbegin 644 data.bin )0F%S938T+FES ` end
你好begin 644 data.bin &Y+V@Y:6] ` end

Pertanyaan yang sering diajukan

Mengapa teks uuencode berisi backtick?

Nilai nol seharusnya dipetakan ke spasi, dan spasi di akhir baris sering hilang selama pengiriman. Banyak encoder, termasuk yang ini, menulis backtick sebagai gantinya. Decoder menerima keduanya.

Apa arti begin 644?

Baris ini mengawali blok hasil enkode. 644 adalah mode izin Unix untuk file yang dipulihkan (baca dan tulis untuk pemilik, baca untuk semua orang lain), dan kata setelahnya adalah nama file yang akan dibuat oleh uudecode. Anda dapat mengatur nama tersebut melalui opsi Nama file.

Bisakah saya mendekode uuencode tanpa baris begin?

Bisa. Jika tidak ada baris begin, setiap baris didekode sebagai data. Jika ada, dekode dimulai setelah baris tersebut dan berhenti di baris end, sehingga teks di sekitar blok, seperti isi email, dilewati. Spasi di akhir baris yang dihapus oleh perangkat lunak email dipulihkan secara otomatis.

Apakah uuencode sama dengan Base64?

Tidak. Keduanya mengubah 3 byte menjadi 4 karakter, tetapi uuencode memakai rentang karakter yang berbeda, karakter panjang di setiap baris, serta baris begin dan end. Keluaran Base64 tidak dapat didekode sebagai uuencode, begitu pula sebaliknya.