لا يمكن أن تتضمّن عناوين 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 |
|---|---|---|
| أحرف أبجدية رقمية | a b 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 K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 | السلاسل النصية، واستخدام المخطط (http)، والمنفذ (8080)، وما إلى ذلك |
| غير محجوز | - _ . ~ | السلاسل النصية |
| تم الحجز | ! * ' ( ) ; : @ & = + $ , / ? % # [ ] | أحرف التحكّم و/أو السلاسل النصية |
عند إنشاء عنوان 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 الذي تتلقّاه من بيانات أدخلها المستخدم أمرًا صعبًا في بعض الأحيان. على سبيل المثال، قد يُدخل المستخدم عنوانًا على النحو "5th&Main St." بشكلٍ عام، عليك إنشاء عنوان URL من أجزائه، مع التعامل مع أي بيانات أدخلها المستخدم كأحرف حرفية.
بالإضافة إلى ذلك، يقتصر عدد الأحرف في عناوين URL على 16384 حرفًا لجميع خدمات الويب وواجهات برمجة تطبيقات الويب الثابتة في "منصة خرائط Google". بالنسبة إلى معظم الخدمات، نادرًا ما يتم الاقتراب من هذا الحدّ الأقصى لعدد الأحرف. ومع ذلك، يُرجى العِلم أنّ بعض الخدمات تتضمّن عدة مَعلمات قد تؤدي إلى عناوين URL طويلة.