كيفية فك ترميز سلسلة مرمّزة لعنوان URL
فك الترميز يعكس الترميز بالنسبة المئوية: يصبح كل تسلسل %XX بايتًا واحدًا، ثم تُقرأ البايتات نصًا بترميز UTF-8. يستخدم وضع «المكون» الدالة decodeURIComponent()، لذا تكون النتيجة هي القيمة الأصلية تمامًا.
مثال محلول
تتحول تسلسلات UTF-8 متعددة البايتات إلى حرف واحد.
- المدخل
- caf%C3%A9%20%26%20cr%C3%A8me
- النتيجة ·
decodeURIComponent() - café & crème
يصبح %20 مسافة، لكن تبقى + علامة جمع حرفية.
- المدخل
- a+b%20c
- النتيجة ·
decodeURIComponent() - a+b c
ينقص التسلسلَ الأخير رقمٌ ست عشري، لذا تعرض الأداة رسالة خطأ.
- المدخل
- %E0%A4%A
- النتيجة ·
decodeURIComponent() - الرابط المشفر غير صالح
بعد إكمال الرقم الناقص، تُفك البايتات الثلاثة إلى حرف ديوناغري واحد.
- المدخل
- %E0%A4%A4
- النتيجة ·
decodeURIComponent() - त
كيف تتعامل الأداة مع ذلك
- كل تسلسل %XX هو بايت واحد، وتُفك البايتات المتتالية معًا بترميز UTF-8، فيصبح %C3%A9 الحرف é.
- لا تُعامل علامة الجمع كمسافة: تبقى + كما هي. إذا جاء النص من نموذج HTML فاستبدل + بـ %20 قبل فك الترميز.
- إذا كان أي تسلسل ناقصًا أو لم يكن UTF-8 صالحًا، تُرفض المدخلات كلها مع رسالة خطأ، ولا يُفك أي جزء منها.
- يترك وضع «عنوان URL الكامل» (decodeURI) تسلسلات الأحرف المحجوزة مثل %26 و%2F و%3F مرمّزة، حتى لا تتغير بنية عنوان URL.