Nasıl kullanılır
- Bir uuencode bloğu oluşturmak için "Kodla", bir bloktan veriyi geri almak için "Kodu çöz" seçeneğini seçin.
- 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.
- Girdinizi yazın veya yapıştırın ya da baytlarını kodlamak için bir dosya açın.
- 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 namebaş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
Mile 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
endsatı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
| Alfabe | ASCII 32 ile 96 arası (boşluktan ` karakterine) |
|---|---|
| Çıktı boyutu | Satır önekleri dahil yaklaşık %137 |
| Dolgu | Satır başına en fazla 45 bayt |
| Standart | POSIX 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.is | begin 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.