الأدوات

ترميز / فك ترميز Base64

الترميز

ترميز وفك ترميز Base64 آمن لـ UTF-8، مع خيار النسخة الآمنة للروابط.

100% من جهة العميل بدون خادم خلفي
الإدخال
الإخراج
في هذه الصفحة

ما هو Base64؟#

Base64 طريقة لكتابة بايتات عشوائية باستخدام 64 محرفًا مطبوعًا من ASCII فقط (A-Z، a-z، 0-9، +، /، مع = للحشو). وُجد لأن شرائح واسعة من عالم الحوسبة صُممت للنص — أجسام البريد، حقول JSON، ترويسات HTTP، بادئات data-URI — وتختنق على البايتات الخام، خاصة البايتات ذات البت العالي المضبوط أو رموز التحكم المُضمَّنة. Base64 هو اللغة المشتركة التي تلجأ إليها حين تحتاج بيانات ذات شكل ثنائي أن تنجو عبر قناة نصية فقط.

كل ثلاث بايتات إدخال (24 بت) تصير أربعة محارف base64 (كلٌّ يرمز 6 بت). لهذا يكون ناتج base64 دائمًا من مضاعفات الأربعة في الطول، ولماذا هو أكبر بنحو 33% من البايتات الأصلية — الإسهاب هو ثمن قابلية الطباعة. حين لا يكون طول الإدخال من مضاعفات الثلاثة، يظهر حرف حشو = واحد أو اثنان في النهاية.

تُرمِّز هذه الصفحة وتُفك base64 بأمان مع UTF-8. فخ يقع فيه الناس باستمرار: تمرير سلسلة مباشرة إلى btoa() يرمي InvalidCharacterError لحظة احتوائها على محرف غير ASCII (é، 中文، إيموجي). الإصلاح هو ترميز النص إلى بايتات UTF-8 أولًا، ثم base64 — وهذا بالضبط ما تفعله هذه الأداة، فيذهب café ذهابًا وإيابًا صحيحًا بدلًا من رمي خطأ.

كيفية الاستخدام#

  1. اختر الاتجاه عبر مفتاح ترميز / فك الترميز أعلى يسار شريط الأدوات.
  2. اكتب أو الصق في لوحة الإدخال على اليسار.
    • في وضع ترميز تُعامَل المدخلات كنص UTF-8.
    • في وضع فك الترميز يجب أن تكون المدخلات سلسلة base64. وتُتسامَح المسافات.
  3. فعِّل آمن للروابط إن احتجت أبجدية base64url (- و_ بدلًا من + و/، مع تجريد الحشو). هذا ما تتوقعه JWTs وكثير من مخططات الروابط الموقَّعة.
  4. تظهر النتيجة حيًّا في لوحة الإخراج على اليمين. انقر نسخ لأخذها.
  5. استخدم مثال لإدراج زوج تجريبي، ومسح لضبط اللوحتين.

الميزات الرئيسية#

  • آمن لـ UTF-8 في كلا الاتجاهين. يُمرِّر الترميز النص عبر TextEncoder أولًا، فلا تنفجر المحارف متعددة البايت أبدًا؛ ويُمرِّر فك الترميز البايتات عبر TextDecoder فيُستعاد النص الأصلي بدقة.
  • الأبجديتان القياسية وURL-safe. مربع اختيار واحد يبدّل بين base64 الكلاسيكي (+/=) وbase64url (-_ بلا حشو)، مع إعادة حشو صحيحة عند الفك.
  • جهة العميل خالصة. يجري التحويل في متصفحك فقط — فلا خادم خلفي ولا طلب شبكة. لصق رمز حساس هنا لا يُرسله إلى أي مكان.
  • سطر حالة حي. يُبلِّغ الشريط أسفل اللوحتين عن أخطاء الترميز/الفك (مثلًا إدخال على شكل % أو مقطوع) بدلًا من إنتاج هراء بصمت.

مثال عملي#

مع ترميز والوضع القياسي (غير URL-safe)، النص ASCII Hello, World! يصير:

SGVsbG8sIFdvcmxkIQ==

العلامتان = التاليتان تُظهران أن إدخال الـ 13 بايت لم يكن من مضاعفات الثلاثة — هذا متوقع، لا خطأ.

يهم معالجة UTF-8 بمجرد أن تغادر ASCII. ترميز café (حيث é بايتا UTF-8، c3 a9) يعطي:

Y2Fmw6k=

لو استدعيت btoa("café") مباشرة في طرفية، لرمى خطأ. هذه الأداة لا تفعل، لأنها تُرمِّز بايتات UTF-8 أولًا.

يعيد وضع URL-safe كتابة الأبجدية فلا يحمل المخرجات أبدًا محارف قد يُسيئ قراءتها رابط: يصير + هو -، و/ هو _، وتُزال علامات حشو = التالية (تُعاد تلقائيًّا عند الفك). خذ المخرجات القياسية من فوق، SGVsbG8sIFdvcmxkIQ== — في وضع URL-safe تُتجرد علامتا الحشو =، فتعطي SGVsbG8sIFdvcmxkIQ. وتبديل +//-/_ لا يغيّر شيئًا إلا حين تظهر تلك المحارف فعلًا في المخرجات، مما يميل للحدوث مع حمولات ثنائية كملخصات الهاش أو الرموز العشوائية — بالضبط نوع البيانات تُدرجه في مسار رابط أو معامل استعلام دون تهريب إضافي.

الأسئلة الشائعة#

نصي المفكوك يظهر كـ mojibake (محارف مشوَّهة). ماذا حدث؟#

تقريبًا دائمًا، base64 الذي فككته كان ترميز بايتات في مجموعة محارف أخرى (غالبًا Latin-1 أو Windows-1252)، لا UTF-8. تفك هذه الأداة البايتات كـ UTF-8، فـ é المرمَّز بـ Latin-1 (0xe9، بايت وحيد) ليس UTF-8 صالحًا ويظهر بشكل خاطئ. اعرف كيف رمَّز الطرف الآخر النص الأصلي، أو أعد ترميزه كـ UTF-8 أولًا.

base64 القياسي أم base64url — أيهما أريد؟#

القياسي (+/=) هو الافتراضي لكل شيء لن يذهب إلى رابط: مرفقات البريد، data: URIs، حقول JSON تحمل ثنائيًّا. فعِّل آمن للروابط حين ستجلس المخرجات في مسار رابط، أو سلسلة استعلام، أو مقطع JWT، حيث + و/ و= إمّا تكسر التحليل أو تُتلفها أثناء النقل. وتُقبل自動يكياً صيغتي الفك كلتاهما.

لماذا المخرجات المرمَّزة أطول من إدخالي؟#

هذا متأصّل، لا خطأ. يحزم base64 6 بت لكل محرف بدل 8، فالمخرجات نحو 4/3 حجم الإدخال — أي زيادة نحو 33%. للمدخلات الصغيرة جدًّا قد تبدو أكبر نسبيًّا، لأن البنية الثابتة تطغى.

هل يستطيع هذا فك تشفير أو كسر سلسلة base64؟#

لا — base64 ترميز، لا تشفير. قابل للعكس بالكامل بالتصميم ولا يحمل مفتاحًا. أي شخص بالسلسلة يستطيع فكها. إن احتجت سرية فعلًا، فشفّر أولًا (مثلًا بمخطط تشفير مُصدَّق عليه) ثم رمّز النص المشفَّر بـ base64 للنقل.