ترميز Uuencode وفك ترميزه

رمّز النصوص أو البايتات الست عشرية أو الملفات بصيغة Unix-to-Unix الكلاسيكية، أو فك ترميز كتل uuencode من رسائل البريد القديمة وأرشيفات Usenet والسكربتات واستعد البيانات الأصلية.

تعمل بالكامل داخل متصفحك، ولا يُرفع أي شيء.

طريقة الاستخدام

  1. اختر «ترميز» لإنشاء كتلة uuencode، أو «فك الترميز» لاستعادة البيانات منها.
  2. أبقِ «سطرا begin / end» مفعّلًا وأدخل «اسم الملف» إذا كانت النتيجة ستُستخدم مع الأمر uudecode. أوقف هذا الخيار للحصول على أسطر البيانات فقط.
  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، كان uuencode الطريقة المعتادة لإرسال البرامج والصور بالبريد الإلكتروني ونشرها على Usenet. ثم حلّ محله Base64 الخاص بـ MIME خلال التسعينيات: فلم يكن في uuencode أي وسيلة للتصريح بنوع المحتوى، وكانت له عدة أنواع غير متوافقة، كما كانت بعض علامات الترقيم فيه تتغير عند مرورها عبر البوابات بين أنظمة ASCII وEBCDIC، ولهذا السبب أُنشئ xxencode.

لا تزال تصادف بيانات مرمّزة بـ uuencode في أرشيفات البريد والأخبار وسكربتات shell القديمة والأنظمة القديمة. أما للأعمال الجديدة فاستخدم Base64، أو تحويل الملف إلى Base64 للملفات الكاملة.

Uuencode في سطر الأوامر وفي Python

# 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'

أُزيلت الوحدة القديمة 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. ويمكنك تحديد الاسم في الخيارات.

هل يمكنني فك ترميز uuencode دون سطر begin؟

نعم. إذا لم يوجد سطر begin، يُفك ترميز كل سطر على أنه بيانات. وإذا وُجد، يبدأ فك الترميز بعده ويتوقف عند سطر end، فيُتخطى النص المحيط بالكتلة، مثل نص رسالة بريد إلكتروني. كما تُستعاد تلقائيًا المسافات التي حذفتها برامج البريد من نهايات الأسطر.

هل uuencode هو نفسه Base64؟

لا. كلاهما يحوّل 3 بايتات إلى 4 أحرف، لكن uuencode يستخدم نطاقًا مختلفًا من الأحرف، وحرف طول في كل سطر، وسطري begin وend. ولا يمكن فك ترميز مخرجات Base64 على أنها uuencode ولا العكس.