الأدوات
الأدلة

ترميز / فك ترميز URL

الترميز

ترميز بالنسبة المئوية لمكونات الروابط والروابط الكاملة (RFC 3986).

100% من جهة العميل بدون خادم خلفي
الإدخال
الإخراج
في هذه الصفحة

ما هو ترميز URL؟#

قد لا تحتوي الروابط إلا على مجموعة صغيرة من المحارف غير المُهرَّبة — حروف ASCII، وأرقام، وقليل من الرموز مثل -، _، .، ~. كل شيء آخر (مسافة، أو &، أو محرف صيني، أو إيموجي، حتى / حين يُقصد كبيانات لا فاصل مسار) يجب أن يُكتب كـ تهريب بترميز نسبة مئوية: % يتبعه رقمان سداسيان، مثل %20 لمسافة أو %E4%B8%AD لبايتات UTF-8 لـ . ترميز URL هو الترجمة الآلية التي تجعل النص العشوائي آمنًا للسفر داخل رابط.

هناك مهمتان مختلفتان يُخلط بينهما طوال الوقت، وتكشف هذه الأداة عن كلتيهما عبر مُحدِّد الخيارات:

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

يفك الترميز كلا الصيغتين. حين تحتوي المدخلات تهريبًا مشوَّهًا مثل %GG (سداسي غير صالح) أو % وحيدًا، تُظهر الأداة الخطأ وتشير إلى الموضع المُخطئ بدلًا من التخمين.

كيفية الاستخدام#

  1. اختر ترميز أو فك الترميز من المفتاح أعلى اليسار.
  2. في الخيارات، اختر مكوّن لقيمة مفردة تضعها في رابط، أو رابط كامل لرابط كامل يجب أن يحافظ بنيته.
  3. الصق في لوحة الإدخال على اليسار.
  4. اقرأ النتيجة من لوحة الإخراج على اليمين وانقر نسخ.
  5. يحمِّل مثال سلسلة تجريبية؛ ويعيد مسح ضبط اللوحتين.

الميزات الرئيسية#

  • نطاقان حقيقيان، لا واحد. يُطابق المكوّن مقابل الرابط الكامل تمييز encodeURIComponent / encodeURI تمامًا، فيستطيع تهرّب قيمة مفردة أو ترتيب رابط كامل دون تبديل الأدوات.
  • UTF-8 افتراضيًّا. تُرمَّز المحارف غير ASCII كتتابع بايتات UTF-8 (المعيار منذ RFC 3986)، فيصير 中文 هو %E4%B8%AD%E6%96%87، لا ككتلة Latin-1 بتهريب مفرد.
  • الأخطاء تشير إلى الموضع. حين يصطدم الفك بتهريب % غير صالح، يُبلِّغ سطر الحالة عن موقعه، بدلًا من التخلص من الإدخال كله.
  • يعمل محليًّا. كل شيء يجري في متصفحك؛ لا شيء مما تلصقه يُرفَع.

مثال عملي#

ترميز الجزء a/b?c=d & e بوضع مكوّن يُنتج:

a%2Fb%3Fc%3Dd%20%26%20e

لاحظ أن / تصير %2F، و? تصير %3F، و= تصير %3D، والمسافة تصير %20، و& تصير %26 — كل محرف يمكن قراءته كبنية URL قد عُدِّل. هذه هي الصيغة الصحيحة لحشر السلسلة كلها في قيمة استعلام واحدة.

الآن بدِّل إلى وضع رابط كامل ورمّز رابطًا كاملًا:

https://example.com/path?q=hello world&lang=zh CN

تحتفظ النتيجة بالبروتوكول، والشرطات، و?، و& سليمة وتهرب فقط المسافات الحرفية:

https://example.com/path?q=hello%20world&lang=zh%20CN

هذا هو الفرق بين الوضعين بنظرة واحدة: المكوّن يسطَّح كل شيء إلى بيانات، والرابط الكامل يحافظ على الهيكل العظمي للرابط وينظف فقط البايتات التي تحتاج ذلك.

الأسئلة الشائعة#

مكوّن أم رابط كامل — كيف أقرر؟#

إن كنت تبني سلسلة استعلام وجاءت إحدى القيم من إدخال مستخدم، فرمّز تلك القيمة بـ مكوّن. إن كان لديك بالفعل رابط مكتمل يحوي ببساطة بعض المحارف الشاردة (مسافات، لهجات)، فمرّر الكل عبر رابط كامل. اختبار مفيد: هل ما زالت المخرجات تحتاج ? و& و/ لتعمل كرابط؟ استخدم رابط كامل. هل تلك المحارف فعلًا جزء من البيانات؟ استخدم مكوّن.

سلسلتي المفكوكة تحوي %GG وتُخطئ الأداة. لماذا؟#

يجب أن يتبع % دائمًا رقمان سداسيان. %GG ليس سداسيًّا صالحًا، فيرفضه الفاكّ ويُبلِّغ عن الموضع — نفس الإدخال الذي يرمي URIError في الكود. إمّا أن تُصلح المصدر ليُرسل %25 (الصيغة المُرمَّزة لـ % حرفيًّا) أو أن تُصحِّح التهريب المشوَّه.

هل أرمّز قبل بناء سلسلة الاستعلام أم بعده؟#

رمّز كل قيمة قبل ضمها بـ = و&. إن بنيت ?q=a & b أولًا ثم رمّت الكل بوضع مكوّن، فستُهرَّب = و& أيضًا ولن يراهما الخادم كفاصلين. رمّز القطع، ثم جمّعها.

هل يتعامل مع Unicode كما تفعل المتصفحات؟#

نعم. تتوقع المتصفحات والخوادم الحديثة أن تحمل تهريب النسبة المئوية بايتات UTF-8، وهذا ما تُصدره هذه الأداة — يصير هو %E4%B8%AD. إن كنت تُنقّب في نظام قديم يتوقع ترميزًا قديمًا ذا بايت واحد (Latin-1، GBK، إلخ)، فستختلف البايتات وستحتاج أداة ترميز محددة.