كيف يعمل
يستبدل ترميز URL (الترميز بالنسبة المئوية) الأحرف التي لا يمكن أن تظهر حرفيًا في عنوان بتسلسلات %XX تحمل قيمة البايت الخاصة بها. فمثلًا يتحوّل الفراغ إلى %20.
يهرّب نطاق "المكوّن" أيضًا الأحرف المحجوزة (= و& و/ و؟ و#): استخدمه لقيمة مَعلمة. أما "عنوان URL الكامل" فيحافظ على بنية العنوان: استخدمه لعنوان URL كامل.
في نماذج HTML يُرمَّز الفراغ بـ + (application/x-www-form-urlencoded)؛ وفي بقية الحالات يُستخدم %20 وفق معيار RFC 3986.
أمثلة
hola mundo & máshola%20mundo%20%26%20m%C3%A1sيُهرَّب "&" (%26) كي لا يُخلَط مع فاصل مَعلمات؛ و"á" تُرمَّز بـ UTF-8 (%C3%A1).a=1&b=2a%3D1%26b%3D2https://sitio.com/á b?x=1 2URL completa: https://sitio.com/%C3%A1%20b?x=1%202في وضع "عنوان URL الكامل" تُحفَظ :// و/ و؟؛ ولا يُهرَّب إلا ما قد يكسر العنوان.حالات الاستخدام
- إنشاء مَعلمات الاستعلام بأمان عند بناء عنوان URL يدويًا.
- ترميز قيم تحتوي & أو = أو فراغات أو حروفًا مشكولة قبل إرسالها في طلب GET.
- فك ترميز عنوان URL لقراءة القيم التي تحملها كل مَعلمة.
- إعداد أجسام application/x-www-form-urlencoded لإرسال النماذج.
الأسئلة الشائعة
ما الفرق بين "المكوّن" و"عنوان URL الكامل"؟
يهرّب "المكوّن" (encodeURIComponent) أيضًا = و& و/ و؟ و# — وهو لقيمة مفردة. أما "عنوان URL الكامل" (encodeURI) فيحافظ على هذه الأحرف البنيوية — وهو لعنوان URL كامل.
متى يُستخدم + ومتى %20 للفراغ؟
لا يخصّ + سوى جسم النماذج (application/x-www-form-urlencoded). أما في بقية عنوان URL فالمعيار للفراغ هو %20.
لماذا تتحوّل "á" إلى %C3%A1 وليس إلى %XX واحد؟
لأنه يُرمَّز بـ UTF-8: تشغل الأحرف غير ASCII عدة بايتات، ويُمثَّل كل بايت بتسلسل %XX خاص به.
هل ترميز عنوان URL يجعله آمنًا؟
لا. تجعله صالحًا على مستوى الصياغة فقط. وليس تشفيرًا ولا يحمي المحتوى بأي شكل.