ByteCompress

أداة ترميز URL

قم بترميز الأحرف الخاصة في URLs أو مكونات URI الفردية بحيث تكون آمنة للإرسال في طلبات HTTP، وسلاسل الاستعلام، وبيانات النماذج. يتبع RFC 3986.

0 chars
FreeClient-sideNo signup

تقوم مسافة في سلسلة استعلام URL بكسر الطلب بصمت. يحدد RFC 3986 (معرف المورد الموحد: بناء جملة عام) أي الأحرف آمنة في URL وأيها يجب ترميزها بشكل نسبي. يستبدل الترميز النسبي كل بايت غير آمن بـ % متبوعًا برقمين سداسيين كبيرين. تطبق هذه الأداة المستندة إلى المتصفح RFC 3986 على الفور، دون نقل بياناتك إلى أي مكان. استخدمها لترميز URLs كاملة أو قيم معلمات استعلام فردية واحصل على ناتج متوافق مع المعايير في كل مرة.

كيفية ترميز URL

  1. الصق URL أو النص في حقل الإدخال.
  2. اختر وضع URL الكامل لترميز الأحرف غير الآمنة فقط، أو وضع المكونات لترميز جميع الأحرف الخاصة بما في ذلك & و=.
  3. يظهر الناتج المرمز في لوحة النتائج.
  4. انسخ السلسلة المرمزة لاستخدامها في طلبك أو كودك أو وثيقتك.

فهم الترميز النسبي

معيار RFC 3986

يحدد RFC 3986 (IETF، 2005) فئتين من الأحرف في URI. يمكن أن تظهر الأحرف غير المحجوزة (A-Z a-z 0-9 - _ . ~) بدون ترميز. الأحرف المحجوزة (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) لها معنى هيكلي خاص وقد تحتاج إلى ترميز أو لا حسب السياق. يجب ترميز كل حرف آخر - بما في ذلك المسافات، Unicode غير ASCII، والأحرف خارج هذه المجموعات - بشكل نسبي.

encodeURI مقابل encodeURIComponent

يوفر JavaScript وظيفتين للترميز. encodeURI() ترمز URL كامل وتترك الأحرف المحجوزة سليمة لأنها تؤدي أدوار هيكلية. encodeURIComponent() ترمز الأحرف الهيكلية أيضًا، معاملة إياها كبيانات حرفية - تم تصميمها لأسماء وقيم معلمات الاستعلام الفردية حيث يمكن أن تكسر & و= بناء جملة URL. يتوافق وضع URL الكامل في هذه الأداة مع encodeURI؛ بينما يتوافق وضع المكونات مع encodeURIComponent.

مثال

الإدخال

مرحبا بالعالم! @2024

الناتج (وضع المكونات)

مرحبا%20بالعالم!%20%402024

تُرمز المسافة كـ %20 (معيار RFC 3986)؛ تصبح @ %40. علامة التعجب هي حرف غير محجوز في بعض السياقات وقد يتم ترميزها أو لا حسب الوضع.

حالات الاستخدام الشائعة

  • قيم معلمات الاستعلام - ترميز القيم التي تحتوي على &، =، أو + قبل إضافتها إلى URL
  • استفسارات محركات البحث - ترميز إدخال البحث الخاص بالمستخدم قبل بناء URL إعادة التوجيه
  • بناء طلبات API - ترميز أجزاء المسار التي تحتوي على شرطات، مسافات، أو أحرف خاصة
  • معلمات OAuth - تتطلب سلاسل توقيع OAuth 1.0 ترميزًا نسبيًا حسب RFC 5849

الأخطاء الشائعة

  • الترميز المزدوج - إذا كانت القيمة قد تم ترميزها بالفعل، فإن ترميزها مرة أخرى يقوم بترميز % نفسه، مما ينتج %2520 بدلاً من %20
  • استخدام وضع URL الكامل لقيم المعلمات - يترك وضع URL الكامل & و= غير مرمزة، مما يكسر بناء جملة سلسلة الاستعلام؛ استخدم وضع المكونات لقيم المعلمات
  • نسيان الأحرف غير ASCII - يجب تحويل النص غير ASCII إلى بايتات UTF-8 أولاً، ثم يتم ترميز كل بايت بشكل منفصل

لإعادة العملية، استخدم فك ترميز URL. بالنسبة للبيانات الثنائية المنقولة في معلمات استعلام URL، قم أولاً بالترميز باستخدام ترميز Base64 في وضع آمن لـ URL، ثم يكون الناتج آمنًا بالفعل بدون ترميز نسبي إضافي.

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

ما الفرق بين ترميز URL وترميز Base64؟

يستبدل الترميز النسبى الأحرف غير الآمنة بتسلسلات سداسية عشرية %XX مع الحفاظ على الأحرف الآمنة كما هي، لذا فإن طول الناتج مشابه لطول المدخلات. يقوم Base64 بتحويل جميع البيانات إلى أبجدية مكونة من 64 حرفًا، مما يزيد الحجم بنسبة 33% ولكنه يضمن أن النتيجة تحتوي فقط على أحرف ASCII الآمنة. يجعل الترميز النسبي بعض الأحرف آمنة للاستخدام في URL؛ بينما يقوم Base64 بترميز البيانات الثنائية العشوائية كنص.

متى يجب أن أستخدم encodeURI مقابل encodeURIComponent في JavaScript؟
encodeURI() مخصص لترميز URL كامل - يحافظ على الأحرف الهيكلية مثل : / ? # & =. encodeURIComponent() مخصص لترميز القيم الفردية داخل URL - يقوم بترميز الأحرف الهيكلية بحيث يتم اعتبارها بيانات حرفية بدلاً من بناء جملة URL. عند الشك، استخدم encodeURIComponent() لأي مدخلات مقدمة من المستخدم.
لماذا تتحول المسافة إلى %20 في بعض أدوات الترميز ولكن + في أدوات أخرى؟
%20 هو الترميز النسبي RFC 3986 لمسافة وهو صحيح لأجزاء مسار URI وقيم الاستعلام. علامة + التي تمثل مسافة خاصة بـ application/x-www-form-urlencoded (إرسال النماذج HTML)، والتي سبقت RFC 3986. كلاهما صالح في سياقاتهما، ولكن %20 هو المعيار العالمي خارج نماذج HTML.
هل يعمل ترميز URL مع الأحرف غير ASCII؟

نعم. يتم تحويل الأحرف غير ASCII أولاً إلى بايتات UTF-8، ثم يتم ترميز كل بايت بشكل منفصل. تصبح الحرف ş (U+015F) %C5%9F. يصبح الحرف الصيني 中 (U+4E2D) %E4%B8%AD. تتوقع المتصفحات والخوادم الحديثة جميعها ترميز UTF-8 للأحرف غير ASCII في URLs.

هل يتم إرسال بيانات URL الخاصة بي إلى خوادمكم عند استخدام هذه الأداة؟

لا. جميع الترميزات تستخدم encodeURI() أو encodeURIComponent() تعمل محليًا في متصفحك. لا يتم نقل URLs، ومعلمات الاستعلام، ورموز المصادقة، وأي بيانات أخرى تقوم بلصقها إلى خوادمنا.