ما هو Base64؟ ومتى تستخدمه فعلياً؟
ما هو Base64؟ ومتى تستخدمه فعلياً؟
رأيت سلاسل مثل SGVsbG8h في الروابط والإيميلات — هذا Base64، أكثر ترميز انتشاراً في الويب. لنتفهمه بعيداً عن الالتباس الشائع.
ما الذي يفعله فعلاً؟
Base64 يحوّل أي بيانات ثنائية إلى نص آمن للنقل — باستخدام 64 حرفاً فقط (A-Z، a-z، 0-9، +، /). كل 3 بايت تصبح 4 أحرف.
نقطة حاسمة: Base64 ليس تشفيراً. أي شخص يفك فوراً — لا يُستخدم لإخفاء كلمات المرور أبداً.
لماذا نحتاجه أصلاً؟
الأنظمة القديمة (SMTP للإيميل) صُممت للنص فقط — تنقل بيانات ثنائية عبرها يشوهها. Base64 يلفها في غلاف نصي آمن:
- مرفقات البريد: الصور والملفات تُنقل Base64 تحت الغطاء
- Data URIs: تضمين صورة صغيرة في HTML/CSS مباشرة
- رموز المصادقة: JWT تتكون من 3 قطع Base64
- Cookies والروابط: نقل بيانات عبر وسائط نصية فقط
الفخ الشائع مع العربية
المشكلة الكلاسيكية: btoa("مرحبا") يرمي خطأ! لأن btoa يتعامل فقط مع أحرف 0-255، والحرف العربي أكبر.
الحل الصحيح: تحويل إلى UTF-8 أولاً ثم ترميز:
js
// ترميز (يدعم العربية)
btoa(String.fromCodePoint(...new TextEncoder().encode("مرحبا")))
// فك الترميز
new TextDecoder().decode(Uint8Array.from(atob(s), c => c.charCodeAt(0)))
أداة Base64 لدينا تطبق هذا الصحيح تلقائياً — جرّب أي نص عربي.
تضخم الحجم: الثمن المخفي
كل 3 بايت تصبح 4 أحرف → تضخم 33%. صورة 1MB تصبح 1.33MB نص. لذلك:
- ✅ اضمّن أيقونات صغيرة (أقل من 2KB) في CSS
- ❌ لا تضمّن صوراً كبيرة — تعطّل التخزين المؤقت وتضخم HTML
الخلاصة
Base64 جسر نقل نصي، لا أداة أمان ولا ضغط. استخدمه لنقل بيانات ثنائية عبر وسائط نصية، ولا تنسَ UTF-8 مع أي لغة غير لاتينية.