Uuencode ve Uudecode

Metni, onaltılık baytları veya dosyaları klasik Unix-to-Unix biçiminde kodlayın ya da eski e-postalardan, Usenet arşivlerinden ve betiklerden alınan uuencode bloklarını orijinal veriye geri çözün.

Tamamen tarayıcınızda çalışır. Hiçbir veri yüklenmez.

Nasıl kullanılır

  1. Bir uuencode bloğu oluşturmak için "Kodla", bir bloktan veriyi geri almak için "Kodu çöz" seçeneğini seçin.
  2. Sonucun uudecode komutuyla çalışması gerekiyorsa "begin / end satırları" seçeneğini açık bırakın ve bir "Dosya adı" girin. Yalnızca veri satırlarını almak için seçeneği kapatın.
  3. Girdinizi yazın veya yapıştırın ya da baytlarını kodlamak için bir dosya açın.
  4. Kod çözerken, varsa begin satırı dahil bloğun tamamını yapıştırın; ardından sonucu kopyalayın veya dosya olarak indirin.

Uuencode nedir?

Unix-to-Unix encode ifadesinin kısaltması olan uuencode, dosyaların yalnızca metin taşıyan UUCP bağlantıları üzerinden Unix makineleri arasında kopyalandığı 1980 civarına dayanır. Her 3 baytı dört adet 6 bitlik değere dönüştürür ve her birine 32 ekler; böylece boşluktan alt çizgiye kadar uzanan yazdırılabilir karakterler elde edilir. Posta sistemleri satır sonundaki boşlukları sık sık sildiği için sıfır değeri boşluk yerine ters tırnak (`) olarak yazılır; bu araç da böyle yapar.

Bir uuencode dosyasının sabit bir düzeni vardır:

  • Bir begin 644 name başlık satırı. Burada 644, sekizlik tabanda Unix dosya modu (sahibi okuyup yazabilir, diğer herkes okuyabilir), name ise oluşturulacak dosyanın adıdır.
  • En fazla 45 girdi baytı içeren veri satırları. Her satır bir uzunluk karakteriyle (32 artı bayt sayısı; bu nedenle tam bir satır M ile başlar) başlar ve ardından en fazla 60 kodlanmış karakter gelir.
  • Sıfır bayt anlamına gelen tek bir ters tırnaktan oluşan bir satır ve ardından end satırı.

Uzunluk karakterleri ve satır sonlarıyla birlikte çıktı, girdiden yaklaşık %38 daha büyüktür.

Günümüzde uuencode

MIME yaygınlaşmadan önce uuencode, programları ve görselleri e-postayla göndermenin ve Usenet'te paylaşmanın olağan yoluydu. 1990'larda yerini MIME Base64 aldı: uuencode içerik türünü bildiremiyordu, birbiriyle uyumsuz birkaç varyantı vardı ve bazı noktalama karakterleri ASCII ile EBCDIC sistemleri arasındaki ağ geçitlerinde bozuluyordu; xxencode de bu yüzden geliştirildi.

Uuencode verilerine bugün hâlâ posta ve haber arşivlerinde, eski kabuk betiklerinde ve eski sistemlerde rastlanır. Yeni işler için Base64, dosyaların tamamı için ise Dosyadan Base64'e aracını kullanın.

Komut satırında ve Python'da uuencode

# Kabuk (GNU sharutils): önce girdi dosyası, sonra begin satırındaki ad
uuencode photo.jpg photo.jpg > photo.uu
uudecode photo.uu

# Python: her seferinde en fazla 45 baytlık tek bir satır
import binascii
line = binascii.b2a_uu(b'hello', backtick=True)
binascii.a2b_uu(line)          # sonuç: b'hello'

Python'un eski uu modülü Python 3.13'te kaldırıldı, ancak binascii fonksiyonları kullanılmaya devam ediyor.

Teknik özellikler

AlfabeASCII 32 ile 96 arası (boşluktan ` karakterine)
Çıktı boyutuSatır önekleri dahil yaklaşık %137
DolguSatır başına en fazla 45 bayt
StandartPOSIX uuencode
Büyük/küçük harf duyarlıEvet

Örnekler

Girdi (UTF-8)Çıktı
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

Sıkça sorulan sorular

Uuencode metni neden ters tırnak içeriyor?

Sıfır değeri boşluğa karşılık gelirdi ve satır sonundaki boşluklar aktarım sırasında sık sık kaybolurdu. Bu araç da dahil olmak üzere birçok kodlayıcı bunun yerine ters tırnak yazar. Kod çözücü ikisini de kabul eder.

begin 644 ne anlama gelir?

Kodlanmış bloğu başlatır. 644, geri yüklenen dosyanın Unix izin modudur (sahibi için okuma ve yazma, diğer herkes için okuma); ardından gelen kelime ise uudecode komutunun oluşturacağı dosyanın adıdır. Adı seçeneklerden ayarlayabilirsiniz.

Begin satırı olmadan uuencode çözebilir miyim?

Evet. Begin satırı yoksa her satır veri olarak çözülür. Varsa kod çözme bu satırdan sonra başlar ve end satırında durur; böylece bloğun çevresindeki e-posta gövdesi gibi metinler atlanır. Posta yazılımlarının sildiği satır sonu boşlukları otomatik olarak geri eklenir.

Uuencode, Base64 ile aynı mı?

Hayır. İkisi de 3 baytı 4 karaktere dönüştürür, ancak uuencode farklı bir karakter aralığı, her satırda bir uzunluk karakteri ve begin ile end satırları kullanır. Base64 çıktısı uuencode olarak çözülemez, tersi de mümkün değildir.