شرح الأحرف المحجوزة في عناوين URL
أدلة ترميز عناوين URL
تقسّم مواصفة URL (RFC 3986) الأحرف إلى محجوزة (reserved) وغير محجوزة (unreserved). ومعرفة هذا التقسيم توضّح متى يجب عليك الترميز ومتى لا حاجة إليه.
الأحرف غير المحجوزة (آمنة كما هي)
يمكن أن تظهر الحروف والأرقام والرموز الأربعة - _ . ~ في أي موضع دون ترميز. فترميزها لا يغيّر معناها، ولذلك تُترَك عادةً كما هي.
الأحرف المحجوزة (ذات معنى بنيوي)
تقسّم الأحرف المحجوزة عنوان URL إلى أجزاء. ولاستخدام أحدها كبيانات حرفية، يجب عليك ترميزه.
:/?#[]@— تفصل الأقسام الكبرى (scheme، path، query، fragment، إلخ)!$&'()*+,;=— فواصل فرعية، خصوصاً لمفاتيح وقيم الاستعلام
الحدّ الفاصل بين encodeURI و encodeURIComponent
تُبقي encodeURI على تلك الأحرف المحجوزة محفوظةً، فلا تكسر بنية عنوان URL مكتمل بالفعل. أما encodeURIComponent فتُرمِّزها جميعاً، وهو ما تحتاج إليه عند إدراج جزء صغير مثل قيمة معامل واحدة.
استخدم encodeURIComponent لقيمة مفردة وencodeURI لعنوان كامل — تذكُّر هذه القاعدة وحدها يجنّبك معظم الأخطاء.