ترميز عناوين URL

ولا يمكن أن تكون بعض الأحرف جزءًا من عنوان URL (على سبيل المثال، المسافة)، وبعض الأحرف الأخرى يكون لها معنى خاص في عنوان URL. في نماذج HTML، يُستخدم الحرف = لفصل الاسم عن القيمة. يستخدم بناء الجملة العام لمعرف الموارد المنتظم (URI) ترميز عنوان URL للتعامل مع هذه المشكلة، بينما تقدم نماذج HTML بعض البدائل الإضافية بدلاً من تطبيق ترميز النسبة المئوية لجميع هذه الأحرف.

على سبيل المثال، يتم ترميز المسافات في سلسلة باستخدام %20 أو استبدالها بعلامة الجمع (+). إذا كنت تستخدم حرف الشرطة المستقيمة (|) كفاصل، يجب الحرص على ترميز الممر كـ %7C. يجب ترميز الفاصلة في السلسلة على النحو التالي: %2C.

ننصحك باستخدام مكتبات إنشاء عناوين URL العادية للنظام الأساسي الذي تستخدمه لترميز عناوين URL تلقائيًا، لضمان أن يتم تخطي عناوين URL بشكل صحيح للنظام الأساسي الذي تستخدمه.

إنشاء عنوان URL صالح

قد تظن أنّ عنوان URL "الصالح" واضح بذاته، ولكن الأمر ليس كذلك تمامًا. قد يحتوي عنوان URL الذي يتم إدخاله في شريط عناوين في متصفح مثلاً على رموز خاصة (مثل "上海+中國")؛ يحتاج المتصفح إلى ترجمة هذه الأحرف داخليًا إلى ترميز مختلف قبل الإرسال. وعلى غرار الرمز نفسه، قد يتعامل أي رمز ينشئ إدخال UTF-8 أو يقبله مع عناوين URL التي تتضمّن أحرف UTF-8 على أنّها "صالحة"، ولكنه قد يحتاج أيضًا إلى ترجمة هذه الأحرف قبل إرسالها إلى خادم ويب. تُعرف هذه العملية باسم ترميز عناوين URL أو ترميز النسبة المئوية.

الأحرف الخاصة

نحتاج إلى ترجمة رموز خاصة لأن جميع عناوين URL يجب أن تتوافق مع البنية المحدّدة في مواصفات معرِّف الموارد المنتظم (URI). ويعني ذلك أنّ عناوين URL يجب أن تحتوي فقط على مجموعة فرعية خاصة من حروف ASCII: الرموز الأبجدية الرقمية المألوفة وبعض الأحرف المحجوزة لاستخدامها كأحرف تحكّم ضمن عناوين URL. ويلخص هذا الجدول هذه الأحرف:

ملخّص الأحرف الصالحة لعناوين URL
تحديدالأحرفاستخدام عنوان URL
أحرف أبجدية رقمية أ ب ج د ه ز ه ي ي ك l m n o p q r s u v x y z أ ب C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 5 6 3 7 السلاسل النصية واستخدام النظام (http) والمنفذ (8080) وما إلى ذلك
غير محجوز - _ . ~ سلاسل نصية
تم الحجز ! * ' ( ) ; : @ & = + $ , / ؟ % # [ ] أحرف التحكّم و/أو سلاسل النص

عند إنشاء عنوان URL صالح، يجب أن تتأكد من أنّه لا يتضمّن سوى الأحرف المعروضة في جدول "ملخّص أحرف عناوين URL الصالحة". بشكل عام، يؤدي إنشاء عنوان URL لاستخدام هذه المجموعة من الأحرف إلى حدوث مشكلتَين، إحداهما إغفال والأخرى للاستبدال:

  • الأحرف التي تريد التعامل معها موجودة خارج المجموعة أعلاه. على سبيل المثال، يجب ترميز الأحرف في اللغات الأجنبية مثل 上海+中國 باستخدام الأحرف المذكورة أعلاه. وفقًا للاصطلاح الشائع، يتم غالبًا تمثيل المسافات (غير المسموح بها ضمن عناوين URL) باستخدام علامة الجمع '+' أيضًا.
  • توجد الأحرف ضمن المجموعة أعلاه كأحرف محجوزة، ولكن يجب استخدامها حرفيًا. على سبيل المثال، يتم استخدام ? في عناوين URL للإشارة إلى بداية سلسلة طلب البحث. وإذا كنت تريد استخدام السلسلة "? and the Mysterions"، عليك ترميز الحرف '?'.

يتم ترميز جميع الأحرف المطلوب ترميزها بعنوان URL باستخدام '%' وقيمة سداسية عشرية مكونة من حرفين تتوافق مع حرف UTF-8. على سبيل المثال، سيتم ترميز 上海+中國 بتنسيق UTF-8 بعنوان URL بالصيغة %E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B. سيتم ترميز السلسلة ? and the Mysterians بعنوان URL بالتنسيق %3F+and+the+Mysterians أو %3F%20and%20the%20Mysterians.

الأحرف الشائعة التي تحتاج إلى ترميز

إليك بعض الأحرف الشائعة التي يجب ترميزها:

حرف غير آمن قيمة مشفّرة
مسافة %20
" %22
< %3C
> %3E
# %23
% %25
| %7C

قد يكون تحويل عنوان URL تتلقّاه من البيانات التي يُدخلها المستخدم معقدًا أحيانًا. على سبيل المثال، قد يُدخِل المستخدم عنوانًا على النحو التالي: "شارع التحرير". بشكل عام، يجب إنشاء عنوان URL من أجزائه، مع التعامل مع أي إدخال للمستخدم كأحرف حرفية.

بالإضافة إلى ذلك، تقتصر عناوين URL على 16384 حرفًا لجميع خدمات الويب في "منصة خرائط Google" وواجهات برمجة تطبيقات الويب الثابتة. في معظم الخدمات، نادرًا ما يتم الاقتراب من عدد الأحرف المسموح به. ومع ذلك، تجدر الإشارة إلى أنّ بعض الخدمات تتضمّن معلَمات متعددة قد تؤدي إلى إنشاء عناوين URL طويلة.