الانتقال إلى المحتوى الرئيسي

كيفية فك ترميز سلسلة مرمّزة لعنوان 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.

أدلة ترميز عناوين URL