ترميز URL وفك ترميزه
رمّز النص بترميز النسبة المئوية لاستعماله في URL أو أعده إلى أصله، بالمخططات الثلاثة التي تختلف فعلًا، مع معالجة القوائم سطرًا سطرًا.
أفلت ملفاتك هنا
.txt · حتى 5 م.ب
كيفية ترميز URL وفك ترميزه
- 1
لصق النص أو قائمة عناوين URL
قيمة واحدة أو خمسون، كل قيمة في سطر. ويصلح ملف .txt أيضًا، ويُقرأ بترميز UTF-8 أو Windows-1251.
- 2
اختيار الترميز أو فك الترميز والمخطط
مخطط المكوّن لقيمة واحدة، وURI الكامل لعنوان كامل، وform-urlencoded لمتن طلب POST.
- 3
نسخ النتيجة
انسخها مباشرة أو نزّلها ملفًا نصيًا، وتبقى بنية الأسطر محفوظة في الحالتين.
ثلاثة مخططات، ولماذا يكسر الاختيار الخاطئ الروابط
ترميز المكوّن يهرّب كل ما ليس من الأحرف غير المحجوزة، بما فيها : / ? # & =. وهذا صحيح لقيمة واحدة تدخل في سلسلة الاستعلام، وخاطئ لعنوان كامل: رمّز https://example.com/a?b=1 مكوّنًا، فيصبح كل حرف بنيوي تسلسل نسبة مئوية، ويبقى نص لم يعد URL. أما ترميز URI الكامل فيترك هذه الأحرف البنيوية كما هي، ولا يهرّب إلا المسافات والأحرف غير ASCII، وهذا ما تريده حين يكون المدخل عنوانًا كاملًا أصلًا. وform-urlencoded هو ترميز المكوّن مع استبدال واحد: تصبح المسافات علامات زائد، كما تشترط الصيغة التي ترسل بها نماذج HTML بياناتها.
علامة الزائد ملتبسة فعلًا
في متن form-urlencoded تعني + مسافة. وفي مقطع المسار تعني + علامة زائد حرفية. ولا يستطيع فك الترميز التمييز بينهما من النص وحده، لذلك هي إعداد لا تخمين: اختر form-urlencoded أو فعّل خيار الزائد مسافةً، فتصبح علامات الزائد مسافات. اتركه معطلًا فتبقى كما هي. وللترميز فخ مشابه في الاتجاه الآخر: يجب أن تصبح + الحرفية في المدخل %2B قبل تحويل المسافات إلى علامات زائد، وإلا حوّلها الترميز ثم فك الترميز إلى مسافة دون أن تنتبه. هذا الترتيب ثابت هنا، فالترميز ثم فك الترميز يعيد دائمًا ما بدأت به بالضبط.
تهريبات معطوبة، بتحديد دقيق لموضعها
علامة % منفردة لا يتبعها رقمان ست عشريان، أو تسلسل متعدد البايتات مقطوع مثل %E0%A4، تجعل النص غير قابل لفك الترميز. ودالة فك الترميز المدمجة في المتصفح ترمي استثناء دون أن تذكر الموضع. الوضع الصارم يذكر السطر والموضع لأول مشكلة كي تجدها في قائمة طويلة. والوضع المتساهل يعامل % غير المكتملة علامة نسبة مئوية حرفية ويعيد الباقي، وهذا ما تريده عادةً حين يكون المدخل سطرًا من سجل لا عنوان URL حقيقيًا. وللسبب نفسه يهم العمل سطرًا سطرًا: مدخل واحد معطوب في قائمة من خمسين يخبرك أيها هو.
يبقى النص في علامة التبويب هذه
يستعمل التحويل دوال الترميز المدمجة في المتصفح، ويعمل محليًا بالكامل. سلاسل الاستعلام تحمل كثيرًا رموزًا مميزة ومعرّفات، لذلك نقولها بوضوح: لا يُرفع شيء ولا يُسجَّل ولا يُحتفظ به.
الأسئلة الشائعة
ما الفرق بين encodeURI وencodeURIComponent؟
تهرّب encodeURIComponent الأحرف البنيوية : / ? # & = أيضًا، وهذا صحيح لقيمة واحدة داخل سلسلة الاستعلام. أما encodeURI فتتركها كما هي، وهذا صحيح حين يكون المدخل عنوانًا كاملًا تحتاج فقط إلى جعله آمنًا.
لماذا تعني + أحيانًا مسافة؟
لأن صيغة form-urlencoded التي ترسل بها نماذج HTML بياناتها تعرّفها هكذا. وفي بقية أجزاء URL تعني + علامة زائد حرفية. ولأن النص وحده لا يحدد أي المعنيين ينطبق، يعرضه فك الترميز خيارًا صريحًا.
ماذا أفعل مع خطأ ترميز النسبة المئوية غير الصالح؟
تذكر الرسالة السطر والموضع لأول تهريب معطوب، وهو عادةً % منفردة كان يجب أن تكون %25، أو تسلسل متعدد البايتات مقطوع. أصلحه، أو انتقل إلى فك الترميز المتساهل لتستعيد بقية النص.
هل تعمل الأداة على قائمة عناوين URL؟
نعم، وهذا هو الوضع الافتراضي. يُحوَّل كل سطر على حدة، وتبقى الأسطر الفارغة فارغة، ولا تُهرَّب فواصل الأسطر أبدًا، فتدخل قائمة وتخرج قائمة.
هل تُحفظ فواصل الأسطر؟
في وضع المعالجة سطرًا سطرًا تُحفظ، بما فيها السطر الجديد في النهاية. أوقف هذا الوضع فيُعامل المدخل كله قيمة واحدة، وتصبح فواصل أسطره %0A داخل النتيجة.
كيف أفك ترميز الحروف السيريلية في عنوان؟
الصق العنوان وفك ترميزه بمخطط المكوّن. يعود ترميز UTF-8 بالنسبة المئوية مثل %D0%BF%D1%80%D0%B8 إلى الحروف الأصلية، والرحلة ذهابًا وإيابًا بلا فقدان في الاتجاهين.
هل يُرسل نصي إلى أي مكان؟
لا. الترميز وفك الترميز يستعملان دوال مدمجة في متصفحك، ويعملان محليًا في علامة التبويب هذه، دون أي خادم ودون أي تخزين.