الترميز

URL Encode/Decode

ترميز وفك ترميز URL — الأحرف التي يجب ترميزها في الروابط ومعاملات الاستعلام.

URL encoding (percent-encoding) replaces characters that aren't allowed in a URL — spaces, non-Latin letters, special characters — with %XX sequences, where XX is the hex code of the byte. This keeps links and query parameters from getting mangled in transit.

How to use it

Common uses

Things to keep in mind

Encode parameter values, not the whole URL at once — otherwise you'll also encode the separators you need (:, /, ?, &).

JavaScript's encodeURIComponent and encodeURI encode different character sets — the former is meant specifically for parameter values.

مقالة عن هذه الأداة: URL Encode/Decode: الترميز بالنسبة المئوية في الروابط

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

ما الفرق بين ترميز URL وترميز Base64؟

ترميز URL (percent-encoding) يستبدل الأحرف الخاصة برمز النسبة المئوية متبوعًا بقيمتها السداسية عشرية مثل %20 للمسافة، بينما Base64 هو ترميز مختلف تمامًا لتحويل بيانات ثنائية إلى نص. كثيرون يخلطون بينهما وبين ما يسمى Base64 URL-safe.

ما الفرق بين وضعي Component وURI؟

وضع Component (مثل encodeURIComponent) يرمّز كل الأحرف الخاصة بما فيها & و= و؟ لأنه مخصص لتمرير قيمة داخل معامل استعلام واحد، بينما وضع URI (مثل encodeURI) يترك أحرف بنية الرابط الأساسية مثل : / ؟ # بدون ترميز لأنه مخصص لرابط كامل.

هل يتم إرسال الروابط أو النصوص التي أُدخلها إلى خادم؟

لا، الترميز وفك الترميز يتمّان بالكامل داخل المتصفح عبر JavaScript، دون أي اتصال بخادم أو تخزين للبيانات.

ما هو الترميز المزدوج وكيف يمكن التعرف عليه؟

هو خطأ يحدث عندما تُرمَّز سلسلة مُرمَّزة مسبقًا مرة أخرى — إذ يتحول الرمز % نفسه إلى %25، فيصبح %20 هو %2520. العلامة الدالة على هذه المشكلة هي ظهور تسلسلات مثل %25XX في النتيجة بعد فك الترميز.

لماذا تُرمَّز المسافة أحيانًا كـ + وأحيانًا كـ %20؟

ترميز المسافة كـ + هو صيغة application/x-www-form-urlencoded التي تستخدمها النماذج وسلاسل الاستعلام، بينما %20 هو الترميز القياسي percent-encoding وفق RFC 3986، وهو صحيح في أي جزء من عنوان URL.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Gzip + Base64: ضغط البيانات لنقلها كنص

لماذا تُرمَّز البيانات الثنائية المضغوطة أيضًا بـ Base64 قبل وضعها في حقل نصي.

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

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