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

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

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

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

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

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

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

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

ملخص أحرف عنوان URL الصالحة
تحديدالشخصياتاستخدام عنوان URL
أحرف أبجدية رقمية a c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J L M سلاسل نصية واستخدام المخطّط (http) والمنفذ (8080) وما إلى ذلك
غير محجوز - _ . ~ سلاسل نصية
تم الحجز ! * ' ( ) ; : @ & = + $ , / ? % # [ ] التحكّم في الأحرف و/أو السلاسل النصية

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

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

يتم ترميز كل الأحرف التي سيتم ترميزها باستخدام عنوان URL باستخدام حرف '%' وقيمة سداسية عشرية من حرفين مقابلة لترميز UTF-8. على سبيل المثال، سيتم ترميز 上海+中國 في UTF-8 على النحو التالي: %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 على 8192 حرفًا لجميع خدمات الويب من "منصة خرائط Google" وواجهات برمجة تطبيقات الويب الثابتة. ونادرًا ما يتم الوصول إلى هذا الحد الأقصى المسموح به في معظم الخدمات. ومع ذلك، تجدر الإشارة إلى أنّ بعض الخدمات تحتوي على عدة معلَمات قد تؤدي إلى إنشاء عناوين URL طويلة.