ترميز عناوين 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
أحرف أبجدية رقمية ج ج ج ح n o p q r s u v w x y z متقدم لا شيء 0 1 2 3 4 5 6 7 8 9 سلاسل نصية واستخدام المخطط (http) والمنفذ (8080) وما إلى ذلك
غير محجوز - _ . ~ سلاسل نصية
تم الحجز ! * ( ) ; : @ & = + $ , / ? % # [ ] أحرف التحكّم و/أو السلاسل النصية

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

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

تم ترميز جميع الأحرف المراد ترميزها باستخدام عنوان 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 طويلة.