Uuencode और Uudecode

टेक्स्ट, हेक्स बाइट या फ़ाइलों को क्लासिक Unix-to-Unix फ़ॉर्मैट में एनकोड करें, या पुराने ईमेल, Usenet आर्काइव और स्क्रिप्ट में मिले uuencode ब्लॉक को डिकोड करके मूल डेटा वापस पाएँ।

पूरी तरह आपके ब्राउज़र में चलता है। कुछ भी अपलोड नहीं होता।

उपयोग कैसे करें

  1. uuencode ब्लॉक बनाने के लिए “एनकोड करें” चुनें, या किसी ब्लॉक से डेटा वापस पाने के लिए “डिकोड करें” चुनें।
  2. अगर परिणाम को uudecode कमांड के साथ काम करना है, तो “begin / end लाइनें” चालू रखें और “फ़ाइल का नाम” दर्ज करें। केवल डेटा लाइनें पाने के लिए इन्हें बंद कर दें।
  3. अपना इनपुट टाइप या पेस्ट करें, या किसी फ़ाइल के बाइट एनकोड करने के लिए उसे खोलें।
  4. डिकोड करते समय पूरा ब्लॉक पेस्ट करें, और अगर begin लाइन है तो उसे भी शामिल करें, फिर परिणाम कॉपी करें या उसे फ़ाइल के रूप में डाउनलोड करें।

uuencode क्या है?

Uuencode, यानी Unix-to-Unix encode, लगभग 1980 के दौर का है, जब Unix मशीनों के बीच फ़ाइलें UUCP लिंक से कॉपी की जाती थीं, जो केवल टेक्स्ट ले जा सकते थे। यह हर 3 बाइट को चार 6-बिट मानों में बदलता है और हर मान में 32 जोड़ता है, जिससे स्पेस से लेकर अंडरस्कोर तक के प्रिंट करने योग्य अक्षर मिलते हैं। मेल सिस्टम अक्सर लाइन के अंत के स्पेस हटा देते थे, इसलिए शून्य मान को स्पेस के बजाय बैकटिक (`) के रूप में लिखा जाता है, और यह टूल भी ऐसा ही करता है।

uuencode की गई फ़ाइल का ढाँचा तय होता है:

  • एक हेडर लाइन begin 644 name, जहाँ 644 ऑक्टल में Unix फ़ाइल मोड है (मालिक पढ़ और लिख सकता है, बाकी सभी केवल पढ़ सकते हैं) और name बनाई जाने वाली फ़ाइल का नाम है।
  • अधिकतम 45 इनपुट बाइट वाली डेटा लाइनें। हर लाइन एक लंबाई अक्षर से शुरू होती है (32 जमा बाइट की संख्या, इसलिए पूरी लाइन M से शुरू होती है), जिसके बाद अधिकतम 60 एनकोड किए गए अक्षर आते हैं।
  • एक अकेले बैकटिक वाली लाइन, जिसका अर्थ है शून्य बाइट, और फिर end लाइन।

लंबाई अक्षरों और लाइन ब्रेक को मिलाकर आउटपुट इनपुट से लगभग 38% बड़ा होता है।

आज के समय में uuencode

MIME से पहले, ईमेल से प्रोग्राम और इमेज भेजने और उन्हें Usenet पर पोस्ट करने का आम तरीक़ा uuencode ही था। 1990 के दशक में MIME Base64 ने इसकी जगह ले ली: uuencode में कंटेंट टाइप बताने का कोई तरीक़ा नहीं था, इसके कई असंगत वेरिएंट मौजूद थे, और ASCII व EBCDIC सिस्टम के बीच के गेटवे इसके कुछ विराम चिह्नों को बदल देते थे, इसीलिए xxencode बनाया गया।

uuencode किया गया डेटा आज भी मेल और न्यूज़ आर्काइव, पुरानी शेल स्क्रिप्ट और लेगेसी सिस्टम में मिल जाता है। नए काम के लिए Base64 का उपयोग करें, या पूरी फ़ाइलों के लिए फ़ाइल से Base64 का।

कमांड लाइन और Python में uuencode

# Shell (GNU sharutils): पहले इनपुट फ़ाइल, फिर begin लाइन के लिए नाम
uuencode photo.jpg photo.jpg > photo.uu
uudecode photo.uu

# Python: एक बार में अधिकतम 45 बाइट की एक लाइन
import binascii
line = binascii.b2a_uu(b'hello', backtick=True)
binascii.a2b_uu(line)          # b'hello'

Python का पुराना uu मॉड्यूल Python 3.13 में हटा दिया गया, लेकिन binascii के फ़ंक्शन अब भी मौजूद हैं।

तकनीकी विवरण

वर्णमालाASCII 32 से 96 तक (स्पेस से ` तक)
आउटपुट का आकारलगभग 137%, लाइन प्रीफ़िक्स सहित
पैडिंगप्रति लाइन अधिकतम 45 बाइट
मानकPOSIX uuencode
केस-संवेदीहाँ

उदाहरण

इनपुट (UTF-8)आउटपुट
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

अक्सर पूछे जाने वाले प्रश्न

uuencode किए गए टेक्स्ट में बैकटिक क्यों होते हैं?

शून्य मान स्पेस बनता, और लाइनों के अंत के स्पेस भेजे जाते समय अक्सर खो जाते थे। इसलिए कई एनकोडर, जिनमें यह भी शामिल है, उसकी जगह बैकटिक लिखते हैं। डिकोडर दोनों को स्वीकार करता है।

begin 644 का क्या अर्थ है?

यह एनकोड किए गए ब्लॉक की शुरुआत है। 644 वापस बनाई जाने वाली फ़ाइल का Unix अनुमति मोड है (मालिक के लिए पढ़ना और लिखना, बाकी सभी के लिए केवल पढ़ना), और उसके बाद वाला शब्द उस फ़ाइल का नाम है जिसे uudecode बनाएगा। आप विकल्पों में “फ़ाइल का नाम” सेट कर सकते हैं।

क्या begin लाइन के बिना uuencode डिकोड किया जा सकता है?

हाँ। अगर begin लाइन नहीं है, तो हर लाइन को डेटा के रूप में डिकोड किया जाता है। अगर है, तो डिकोडिंग उसके बाद से शुरू होती है और end लाइन पर रुक जाती है, इसलिए ब्लॉक के आसपास का टेक्स्ट, जैसे ईमेल का मुख्य भाग, छोड़ दिया जाता है। मेल सॉफ़्टवेयर द्वारा हटाए गए अंतिम स्पेस अपने-आप वापस जोड़ दिए जाते हैं।

क्या uuencode और Base64 एक ही हैं?

नहीं। दोनों 3 बाइट को 4 अक्षरों में बदलते हैं, लेकिन uuencode अलग अक्षर रेंज, हर लाइन पर एक लंबाई अक्षर और begin व end लाइनों का उपयोग करता है। Base64 आउटपुट को uuencode के रूप में डिकोड नहीं किया जा सकता, और न ही इसका उल्टा।