ترميز وفك ترميز الروابط URL
أداة مجانية لترميز الروابط URL وفك ترميزها: رمّز معاملات الاستعلام أو الروابط الكاملة، وفك تسلسلات %XX، وعامِل + كمسافة، في متصفحك.
كيف تستخدم أداة ترميز الروابط وفك ترميزها
- اختر ترميز لتحويل النص إلى صيغة آمنة للروابط، أو فك الترميز لإعادة النص المرمّز بعلامة النسبة المئوية إلى أحرف مقروءة.
- عند الترميز، اختر الوضع: مكوّن لقيمة واحدة (مثل معامل استعلام أو جزء من المسار)، أو رابط كامل لترميز عنوان كامل مع الحفاظ على بنيته.
- عند فك ترميز بيانات قادمة من نموذج HTML أو من سلسلة استعلام، فعّل اعتبار + مسافة لتتحوّل علامات
+إلى مسافات. - الصق النص وانسخ النتيجة. إذا كان أحد تسلسلات النسبة المئوية غير سليم، تُبلغك الأداة بخطأ بدل أن تخمّن.
ما هو ترميز الروابط URL؟
لا تقبل الروابط إلا مجموعة محدودة من أحرف ASCII. بعض الأحرف، مثل / و ? و # و & و =، محجوزة لأنها تفصل بين أجزاء العنوان: المسار وسلسلة الاستعلام والجزء (fragment). وأحرف أخرى، كالمسافات وعلامات الاقتباس والحروف العربية والحروف المشكولة والرموز التعبيرية، غير مسموح بها أصلًا. يحلّ ترميز URL، ويُسمّى أيضًا ترميز النسبة المئوية (percent-encoding)، المشكلتين معًا باستبدال كل بايت إشكالي بعلامة % يتبعها رقمان ست عشريان.
يُحوَّل النص أولًا إلى بايتات UTF-8، ثم يُرمَّز كل بايت على حدة. تصبح المسافة %20، وعلامة & تصبح %26، والحرف é (بايتان في UTF-8) يصبح %C3%A9، والرمز التعبيري 😀 (أربعة بايتات) يصبح %F0%9F%98%80. وكل حرف عربي يشغل بايتين، فتصبح كلمة سلام مثلًا %D8%B3%D9%84%D8%A7%D9%85. أما الأحرف غير المحجوزة، أي الحروف اللاتينية والأرقام و - _ . ~، فلا تحتاج إلى ترميز أبدًا.
وضع المكوّن مقابل وضع الرابط الكامل
اختيار الوضع الصحيح هو القرار الأهم، والخطأ فيه مصدر كلاسيكي للأخطاء البرمجية.
وضع المكوّن يعمل مثل encodeURIComponent في JavaScript. فهو يرمّز كل حرف محجوز، بحيث يمكن وضع النتيجة بأمان داخل جزء واحد من الرابط. استخدمه لقيم معاملات الاستعلام أو أجزاء المسار أو أي شيء كتبه المستخدم. مثلًا، عبارة البحث rock & roll تصبح rock%20%26%20roll. لو لم تُرمِّز علامة & لقرأ الخادم roll على أنها بداية معامل جديد.
وضع الرابط الكامل يعمل مثل encodeURI. فهو يفترض أن المُدخل عنوان كامل أصلًا، ويحافظ على الأحرف التي تمنحه بنيته، مثل : / ? # & و =، بينما يرمّز المسافات والأحرف غير ASCII. استخدمه لتنظيف عنوان مثل https://example.com/café menu?q=tea ليصبح https://example.com/caf%C3%A9%20menu?q=tea. لا تستخدمه على قيم منفردة: فعلامة & داخل قيمة ستبقى دون ترميز وتُفسد سلسلة الاستعلام.
قاعدة عملية جيدة: ابنِ الروابط من أجزائها، ورمّز كل قيمة في وضع المكوّن، ولا تستخدم وضع الرابط الكامل إلا للعناوين التي تصلك مجمّعة مسبقًا.
علامة + وترميز النماذج
نماذج HTML المُرسلة بنوع application/x-www-form-urlencoded ترمّز المسافات بعلامة + بدل %20، ولهذا تبدو روابط البحث غالبًا مثل ?q=hello+world. فك ترميز النسبة المئوية القياسي يترك + كما هي، لأن علامة الزائد في المسار تبقى علامة زائد. عند فك ترميز سلسلة استعلام أو بيانات نموذج، فعّل اعتبار + مسافة لتحصل على hello world. واتركه معطّلًا للمسارات وللقيم التي تهمّ فيها علامة + الحرفية، مثل أرقام الهواتف أو بيانات Base64. أما علامة الزائد الحقيقية في بيانات النموذج فتُرسل على شكل %2B، فتُفك بشكل صحيح في الحالتين.
الخصوصية
يجري الترميز وفك الترميز بالكامل في متصفحك. لا يُرسل أي شيء تلصقه، بما في ذلك الروابط التي قد تحتوي على رموز وصول أو معرّفات جلسات أو بيانات شخصية، إلى أي خادم ولا يُخزَّن.
الأسئلة الشائعة
لماذا يفشل فك الترميز بخطأ «غير سليم»؟
يجب أن يتبع كل علامة % رقمان ست عشريان بالضبط، ويجب أن تشكّل البايتات الناتجة نص UTF-8 صالحًا. لا يمكن فك سلاسل مثل 100% أو %G1 أو تسلسل مبتور مثل %E2%82 بشكل موثوق، لذا تُبلغ الأداة عن المشكلة بدل إنتاج نص خاطئ. لتضمين علامة نسبة مئوية حرفية، رمّزها على شكل %25.
ما الفرق بين %20 و +؟
كلاهما يمكن أن يمثّل مسافة، لكن في سياقات مختلفة. %20 صالحة في كل مكان من الرابط، أما + فلا تعني مسافة إلا في سلاسل الاستعلام المرمّزة كنماذج؛ وفي غير ذلك هي علامة زائد حرفية.
هل أرمّز رابطًا كاملًا في وضع المكوّن؟
فقط إذا كان الرابط كله قيمةً داخل رابط آخر، كمعامل redirect= مثلًا. في هذه الحالة يكون وضع المكوّن هو الصحيح تمامًا: https://a.com/?x=1 يصبح https%3A%2F%2Fa.com%2F%3Fx%3D1.
لماذا رُمِّز نصي مرتين؟
يحدث الترميز المزدوج عند ترميز نص مرمّز مسبقًا مرةً أخرى، فتتحوّل %20 إلى %2520. فكّ الترميز مرة واحدة للتحقق، واحرص على ألّا تُرمَّز كل قيمة إلا لحظة إدراجها في الرابط.
هل يُخفي ترميز URL البيانات أو يحميها؟
لا. ترميز النسبة المئوية قابل للعكس بالكامل ولا يوفّر أي حماية. قد تنتهي القيم الحساسة في الروابط في سجلّ المتصفح وسجلّات الخوادم، لذا تجنّب وضع الأسرار في الروابط أصلًا.