الترميز

Gzip/Deflate ↔ Base64

ضغط النص بصيغة Gzip أو Deflate ثم ترميز النتيجة بـ Base64 — والعكس. يعمل عبر Compression Streams API مباشرة في المتصفح.

Base64 by itself doesn't compress anything — quite the opposite, it grows the size by about 33%. To send large text compactly through a text-only channel, it's first compressed with Gzip or Deflate, and only then is the result Base64-encoded.

How to use it

Common uses

Things to keep in mind

Compression only pays off on sufficiently large, compressible text — on short strings the Gzip header overhead plus the Base64 expansion can actually make the result bigger.

Deflate skips Gzip's headers, so its output is more compact, but the format is less self-describing: the receiving side needs to know in advance that it's Deflate specifically.

مقالة عن هذه الأداة: Gzip + Base64: ضغط البيانات لنقلها كنص

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

ما الفرق بين Gzip وDeflate؟

Deflate هو خوارزمية الضغط الخام نفسها، بينما Gzip هو تنسيق يضيف رأسًا (header) ومجموع تحقق CRC حول بيانات Deflate. لهذا بيانات Gzip المضغوطة أكبر قليلًا لكنها تحمل معلومات تحقق إضافية من سلامة البيانات.

لماذا تفشل عملية فك الضغط أحيانًا رغم أن Base64 يبدو صحيحًا؟

غالبًا لأن الصيغة المختارة (Gzip أو Deflate) لا تطابق الصيغة الفعلية التي ضُغطت بها البيانات الأصلية؛ فرأس Gzip يختلف عن بيانات Deflate الخام، لذا يجب اختيار نفس الصيغة المستخدمة عند الضغط.

هل يتم إرسال النص إلى خادم لضغطه أو فك ضغطه؟

لا، تعتمد الأداة على Compression Streams API المدمج في المتصفح، فكل عمليات الضغط وفك الضغط والترميز تتم محليًا دون إرسال أي بيانات إلى خادم.

لماذا يعطي فك الضغط أحيانًا خطأ "invalid header"؟

السبب الأشيع هو الخلط بين الصيغتين: بيانات ضُغطت كـ Deflate "خام" بلا ترويسة، ثم حاولنا فك ضغطها كـ Gzip (الذي يتوقع ترويسته الخاصة وCRC-32)، أو العكس. جرّب تبديل الصيغة في إعدادات الأداة.

هل يقلّل الضغط دائمًا من الحجم النهائي؟

لا. في السلاسل القصيرة جدًا، قد تتجاوز تكاليف ترويسة Gzip والزيادة الناتجة عن Base64 المكاسب المتحققة من الضغط — هذا الأسلوب منطقي فقط مع بيانات نصية كبيرة بما يكفي وقابلة للضغط جيدًا.

مقالات: الترميز

Base64: ما فائدة الترميز وكيف يعمل

كيف يحوّل Base64 البيانات الثنائية إلى نص ASCII، ومتى نحتاج ذلك فعلاً.

Base32: ما الفرق بينه وبين Base64 ومتى يكون أنسب

أبجدية Base32 التي لا تميّز بين حالة الأحرف، والحالات التي تكون فيها أنسب من Base64.

URL Encode/Decode: الترميز بالنسبة المئوية في الروابط

كيف تتحول الأحرف الخاصة في العناوين والمعاملات إلى تسلسلات %XX.

HTML Entities: كيف تعرض الأحرف الخاصة بأمان

لماذا يجب الهروب من الأحرف < > & وكيف يمنع ذلك تعطّل الترميز.

JWT: بنية الرمز وماذا يعني "فك ترميز" JWT

الأجزاء الثلاثة لرمز JWT، ولماذا فك الترميز ليس نفس التحقق من التوقيع.

Unicode Escape: ماذا تعني تسلسلات \uXXXX

من أين تأتي تسلسلات مثل \u0041 في JSON وسلاسل جافاسكريبت، وماذا تعني.

ROT13 وشيفرة قيصر: استبدال بسيط للأحرف

لماذا تجعل إزاحة 13 حرفًا خوارزمية ROT13 عكسية ذاتيًا، ولماذا لا تزال تُستخدم اليوم.

Punycode: كيف تعمل النطاقات الدولية في DNS

كيف يتحول نطاق بأحرف غير لاتينية إلى صيغة ASCII تبدأ بالبادئة xn--.

شيفرة مورس: كيف يتحول النص إلى نقاط وشرطات

مبدأ ترميز الحروف كنقاط وشرطات، وأين لا تزال شيفرة مورس تُستخدم اليوم.

Data URI: متى تُضمَّن الصور مباشرة في الكود

كيف يضمّن Data URI محتوى الملف مباشرة في HTML أو CSS، ومتى يستحق ذلك العناء.

XML Entities: الهروب من الأحرف في مستندات XML

الكيانات الخمس الإلزامية في XML التي بدونها يتعطّل المستند أثناء التحليل.