ترميز النسبة المئوية

ترميز النسبة المئوية ، المعروف أيضًا بترميز عنوان URL ، هو طريقة لترميز أي بيانات في مُعرّف موارد موحد (URI) باستخدام أحرف ASCII الأمريكية المسموح بها فقط ضمن عنوان URI. يُستخدم ترميز النسبة المئوية لضمان عدم تداخل الأحرف الخاصة مع بنية عنوان URI وتفسيره. تُستبدل الأحرف الخاصة بعلامة النسبة المئوية (%) متبوعة برقمين سداسيين عشريين يُمثلان قيمة البايت للحرف. على سبيل المثال، تُرمّز المسافة عادةً على النحو التالي %20:

  • إبداعي:http://example.com/my file.txt
  • مُشفّر:http://example.com/my%20file.txt

على الرغم من أنها تُعرف باسم ترميز عنوان URL ، إلا أنها تُستخدم أيضًا بشكل عام ضمن مجموعة مُعرّفات الموارد الموحدة (URI) الرئيسية، والتي تشمل كلاً من مُحدد موقع الموارد الموحد (URL) واسم المورد الموحد (URN). ونتيجةً لذلك، تُستخدم أيضًا في إعداد بيانات application/x-www-form-urlencodedنوع الوسائط ، كما هو شائع في إرسال بيانات نماذج HTML في طلبات HTTP . ولا يُراعي ترميز النسبة المئوية حالة الأحرف.

ترميز النسبة المئوية في معرّف الموارد الموحد (URI)

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

RFC 3986 القسم 2.2 الأحرف المحجوزة (يناير 2005)
!#$&'()*+,/:;=?@[]
RFC 3986 القسم 2.3 الأحرف غير المحجوزة (يناير 2005)
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789-._~

يجب ترميز الأحرف الأخرى في عنوان URI باستخدام النسبة المئوية.

الأحرف المحجوزة

عندما يكون لحرف من مجموعة الأحرف المحجوزة ("حرف محجوز") معنى خاص ("غرض محجوز") في سياق معين، وينص نظام URI على ضرورة استخدام هذا الحرف لغرض آخر ، فيجب ترميزه بنسبة مئوية . يتضمن ترميز الحرف المحجوز بنسبة مئوية تحويل الحرف إلى قيمته البايتية المقابلة في ASCII ، ثم تمثيل هذه القيمة كزوج من الأرقام الست عشرية (إذا كان هناك رقم ست عشري واحد، يُضاف صفر في البداية ). تُستخدم هذه الأرقام، مسبوقة بعلامة النسبة المئوية ( % %) كحرف هروب ، في URI بدلاً من الحرف المحجوز. (عادةً ما يُحوّل الحرف غير ASCII إلى تسلسل البايت الخاص به في UTF-8 ، ثم تُمثل كل قيمة بايتية كما سبق).

على سبيل المثال، يُستخدم الحرف المحجوز فاصلة ( /,) في مكون "المسار" من معرّف الموارد الموحد (URI) ، حيث يُمثّل فاصلاً بين أجزاء المسار. إذا كان من الضروري، وفقًا لمخطط معرّف الموارد الموحد (URI) المُحدد، /أن يكون فاصلة (,) في جزء من المسار، فيجب استخدام الأحرف الثلاثة فاصلة (,) %2Fأو %2fفاصلة (,) في ذلك الجزء بدلاً من فاصلة (,) غير مُحددة /.

الأحرف المحجوزة بعد ترميز النسبة المئوية
!#$&'()*+,/:;=?@[]
%21%23%24%26%27%28%29%2A%2B%2C%2F%3A%3B%3D%3F%40%5B%5D

قد يتم ترميز الأحرف المحجوزة التي ليس لها غرض محجوز في سياق معين بنسبة مئوية، ولكنها لا تختلف دلاليًا عن تلك التي لا يتم ترميزها.

في جزء " الاستعلام " من معرّف الموارد الموحد (الجزء الذي يلي ?الحرف)، على سبيل المثال، /لا يزال يُعتبر حرفًا محجوزًا، ولكنه عادةً لا يُستخدم لأغراض محجوزة، إلا إذا نصّ نظام معرّف موارد موحد معين على خلاف ذلك. ولا يلزم ترميز الحرف بنسبة مئوية عندما لا يُستخدم لأغراض محجوزة.

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

أحرف غير محجوزة

لا تحتاج الأحرف من المجموعة غير المحجوزة إلى ترميزها بنسبة مئوية.

تُعتبر معرّفات الموارد الموحدة (URIs) التي تختلف فقط في ما إذا كان الحرف غير المحجوز مُشفّرًا بنسبة مئوية أو يظهر حرفيًا، متكافئة بحكم التعريف، ولكن قد لا تُدرك معالجات معرّفات الموارد الموحدة هذا التكافؤ دائمًا في الواقع. على سبيل المثال، لا ينبغي لمستهلكي معرّفات الموارد الموحدة التعامل مع ` %41<<<>` بشكل مختلف عن `<<<>` Aأو `<<<<> %7E` بشكل مختلف عن ~`< ...

حرف النسبة المئوية

لأن رمز النسبة المئوية ( %) يُستخدم للإشارة إلى البايتات المشفرة بنسبة مئوية، فيجب أن يكون هو نفسه مشفرًا بنسبة مئوية %25ليتم استخدامه كبيانات داخل URI.

بيانات عشوائية

تتضمن معظم مخططات URI تمثيل بيانات عشوائية، مثل عنوان IP أو مسار نظام الملفات ، كمكونات لـ URI. ينبغي أن توفر مواصفات مخطط URI، ولكنها غالباً لا تفعل، ربطاً صريحاً بين أحرف URI وجميع قيم البيانات الممكنة التي تمثلها تلك الأحرف.

البيانات الثنائية

منذ نشر RFC 1738 عام 1994، تم تحديد أن المخططات التي توفر تمثيل البيانات الثنائية في معرّف الموارد الموحد (URI) يجب أن تقسم البيانات إلى بايتات من 8 بت، وأن تُشفّر كل بايت بنسبة مئوية كما هو موضح أعلاه. [ 1 ] [ 2 ] [ 3 ] على سبيل المثال، يجب تمثيل قيمة البايت 0x0F بـ %0F، بينما يمكن تمثيل قيمة البايت 0x41 بـ A، أو %41. يُفضّل عادةً استخدام الأحرف غير المشفرة للأحرف الأبجدية الرقمية والأحرف غير المحجوزة الأخرى، لأن ذلك يُؤدي إلى عناوين URL أقصر.

بيانات الشخصية

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

على سبيل المثال، تفترض العديد من مخططات وبروتوكولات معرّف الموارد الموحد (URI) المستندة إلى RFC 1738 و2396 أن أحرف البيانات ستُحوّل إلى بايتات وفقًا لترميز أحرف غير محدد قبل تمثيلها في معرّف الموارد الموحد (URI) بأحرف غير محجوزة أو بايتات مُرمّزة بنسبة مئوية. إذا لم يسمح المخطط لمعرّف الموارد الموحد (URI) بتقديم تلميح حول الترميز المستخدم، أو إذا تعارض الترميز مع استخدام ASCII لترميز الأحرف المحجوزة وغير المحجوزة بنسبة مئوية، فلن يكون من الممكن تفسير معرّف الموارد الموحد (URI) بشكل موثوق. تفشل بعض المخططات في مراعاة الترميز على الإطلاق، وتقترح بدلاً من ذلك أن أحرف البيانات تُطابق أحرف معرّف الموارد الموحد (URI) مباشرةً، مما يترك للتطبيقات تحديد ما إذا كان ينبغي ترميز أحرف البيانات التي لا تنتمي إلى مجموعتي الأحرف المحجوزة أو غير المحجوزة بنسبة مئوية وكيفية القيام بذلك.

الأحرف الشائعة بعد ترميز النسبة المئوية (ASCII أو UTF-8)
"%-.<>\^_`{|}~£
%20%22%25%2D%2E%3C%3E%5C%5E%5F%60%7B%7C%7D%7E%C2%A3%E2%82%AC

يتم أحيانًا ترميز بيانات الأحرف العشوائية بنسبة مئوية واستخدامها في حالات غير متعلقة بمعرفات الموارد الموحدة (URI)، مثل برامج إخفاء كلمات المرور أو بروتوكولات الترجمة الخاصة بالنظام.

المعيار الحالي

توصي صيغة URI العامة بأن تقوم أنظمة URI الجديدة التي تُتيح تمثيل بيانات الأحرف في URI، فعليًا، بتمثيل الأحرف من المجموعة غير المحجوزة دون ترجمة، وأن تُحوّل جميع الأحرف الأخرى إلى بايتات وفقًا لترميز UTF-8 ، ثم تُشفّر هذه القيم بنسبة مئوية. وقد طُرح هذا الاقتراح في يناير 2005 مع نشر RFC 3986. أما أنظمة URI التي طُرحت قبل هذا التاريخ فلا تتأثر.

لم تتناول المواصفات الحالية كيفية التعامل مع بيانات الأحرف المشفرة. ففي الحواسيب، على سبيل المثال، تظهر بيانات الأحرف بشكل مشفر، على مستوى ما، وبالتالي يمكن التعامل معها كبيانات ثنائية أو كأحرف عند ربطها بأحرف URI. من المفترض أن تراعي مواصفات مخطط URI هذا الاحتمال وتفرض أحد الخيارين، ولكن عمليًا، نادرًا ما تفعل ذلك.

تطبيقات غير قياسية

يوجد ترميز غير قياسي لأحرف يونيكود: ، حيث يمثل xxxx وحدة ترميز UTF-16 مكونة من أربعة أرقام سداسية عشرية. على سبيل المثال، يتضمن الإصدار الثالث عشر من معيار ECMA-262 دالةً تستخدم هذا التركيب. [ 4 ] مع ذلك، لم يُحدد هذا السلوك في أيٍّ من مواصفات RFC، وقد رفضه اتحاد شبكة الويب العالمية (W3C). [ 5 ]%uxxxxescape

نوع التطبيق/x-www-form-urlencoded

عند إرسال البيانات المُدخلة في نماذج HTML ، تُشفّر أسماء حقول النموذج وقيمها وتُرسل إلى الخادم في رسالة طلب HTTP باستخدام طريقة GET أو POST ، أو، كما كان مُتبعًا سابقًا، عبر البريد الإلكتروني . [ ملاحظة 1 ] يعتمد التشفير المُستخدم افتراضيًا على إصدار مبكر من قواعد التشفير المئوي العامة لـ URI، [ 6 ] مع عدد من التعديلات مثل توحيد أسطر جديدة واستبدال المسافات بـ +بدلاً من %20. نوع الوسائط للبيانات المُشفّرة بهذه الطريقة هو application/x-www-form-urlencoded، وهو مُعرّف حاليًا في مواصفات HTML و XForms . بالإضافة إلى ذلك، تتضمن مواصفات CGI قواعد لكيفية فك تشفير خوادم الويب لبيانات هذا النوع وإتاحتها للتطبيقات.

عند إرسال بيانات نموذج HTML في طلب HTTP GET، تُضمّن في جزء الاستعلام من عنوان URI للطلب باستخدام نفس الصيغة المذكورة أعلاه. أما عند إرسالها في طلب HTTP POST أو عبر البريد الإلكتروني، فتُوضع البيانات في نص الرسالة، application/x-www-form-urlencodedوتُضمّن في ترويسة Content-Type الخاصة بها.

انظر أيضاً

ملحوظات

  1. تم اقتراح دعم وكيل المستخدم لإرسال نماذج HTML عبر البريد الإلكتروني ، باستخدام عنوان URL من نوع "mailto" كإجراء للنموذج، في القسم 5.6 من RFC 1867 ، خلال حقبة HTML 3.2. وقد طبقت متصفحات الويب المختلفة هذه الميزة عن طريق استدعاء برنامج بريد إلكتروني منفصل أو باستخدام إمكانيات SMTP البدائية الخاصة بها. وعلى الرغم من عدم موثوقيتها في بعض الأحيان، فقد لاقت رواجًا لفترة وجيزة كوسيلة بسيطة لنقل بيانات النموذج دون الحاجة إلى خادم ويب أونصوص CGI . 

مراجع

  1. تي. بيرنرز-لي ؛ إل. ماسينتر ؛ إم. مكاهيل (ديسمبر 1994). محددات مواقع الموارد الموحدة (URL) . مجموعة عمل الشبكة. doi : 10.17487/RFC1738 . RFC 1738 .مُلغى. القسم 2.2. تم إلغاؤه بموجب RFC 4248 و 4266 . تم تحديثه بموجب RFC 1808 و 2368 و 2396 و 3986 و 6196 و 6270 و 8089 .  
  2. تي. بيرنرز-لي ؛ آر. فيلدينغ ؛ إل. ماسينتر (أغسطس 1998). مُعرّفات الموارد الموحدة (URI): بناء الجملة العام . مجموعة عمل الشبكة. doi : 10.17487/RFC2396 . RFC 2396 .مُلغى. القسم 2.4. أُلغي بموجب RFC 3986. تم تحديثه بموجب RFC 2732. يُحدّث RFC 1808 و 1738 .   
  3. تي. بيرنرز-لي ؛ آر. فيلدينغ ؛ إل. ماسينتر (يناير 2005). مُعرِّف الموارد الموحد (URI): الصيغة العامة . مجموعة عمل الشبكة. doi : 10.17487/RFC3986 . STD 66. RFC 3986 .المعيار 66 للإنترنت ، القسم 1.2.1، 2.1، 2.5. يلغي هذا المعيار RFC 2732 و 2396 و 1808 . تم تحديثه بواسطة RFC 6874 و 7320 و 8820 . كما أنه يُحدّث RFC 1738 .   
  4. "مواصفات لغة ECMAScript 2017 (ECMA-262، الإصدار الثامن، يونيو 2017)" . إيكما الدولية. مؤرشف من الأصل في 2 يوليو 2018. تم الاطلاع عليه في 20 يونيو 2018 .
  5. ^ دورست ، مارتن. سويجنارد ، ميشيل (30 نوفمبر 2004). "معرفات الموارد الدولية (IRIs)" . w3.org . تم الاسترجاع 17 سبتمبر 2025 .
  6. بيرنرز-لي، تيم (يونيو 1994). مُعرّفات الموارد العالمية في شبكة الويب العالمية: صيغة موحدة للتعبير عن أسماء وعناوين الكائنات على الشبكة كما هو مستخدم في شبكة الويب العالمية . مجموعة عمل الشبكة. doi : 10.17487/RFC1630 . RFC 1630 .معلوماتي.

تتناول المواصفات التالية جميعها وتحدد الأحرف المحجوزة والأحرف غير المحجوزة وتشفير النسبة المئوية، بشكل أو بآخر: