ترميز عناوين 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 ي ت ف ص ص ص ض ي ف ي س ص ز أ ب ج د ه ي خ خ ط ط ط ط ع ط ظ ع ط ط ظ ع ط ط ظ ع ط ظ السلاسل النصية واستخدام النظام (http) والمنفذ (8080) وغير ذلك
غير محجوز - _ . ~ السلاسل النصية
تم الحجز ! * ' ( ) ; : @ & = + $ , / ؟ % # [ ] أحرف التحكّم و/أو سلاسل النص

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

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