تقنية

ترميز قيمة الرابط: العربية والرموز والترميز المزدوج

كلمة وبايتاتها وترميزها
رسم حسابي أصلي.

ترميز قيمة الرابط يحفظ الرموز. [1][2]

الخلاصة السريعة

رمّز القيمة الخام مرة واحدة، ثم أضفها إلى بنية الرابط. [1]

  • %HH يمثل بايتاً برقم سداسي عشري؛ المسافة %20، و% الحرفية %25. [1]
  • «علم» في UTF-8: D8 B9 D9 84 D9 85؛ ترميزها %D8%B9%D9%84%D9%85. [2]
  • للقيمة A&B: encodeURIComponent يعطي A%26B؛ encodeURI يترك &. [2]
  • في مثالنا q=A%26B يحفظ قيمة واحدة A&B؛ المثال يفترض محللاً يفصل الأزواج عند &. [1][2]
  • 100% يصبح 100%25؛ إعادة ترميزه تعطي 100%2525، وفكها مرة يعطي 100%25. [1][2]
  • نفذ المثال محلياً وافحص المخرجات؛ لم نختبر خادماً.

ابدأ بالبايتات

%HH يتكون من % ورقمين سداسيين لبايت؛ المسافة %20. [1]

«علم»: ستة بايتات UTF-8، D8 B9 D9 84 D9 85؛ الناتج %D8%B9%D9%84%D9%85. [2]

اخترنا كلمة قصيرة لنراجع كل بايت. عدد مجموعات النسبة يتبع البايتات المشفرة، وليس عدد الحروف العربية.

رمّز المكوّن المناسب

encodeURI يترك &؛ encodeURIComponent يعطي %26. [2]

نفترض تطبيقاً يفصل أزواج الاستعلام عند &. القيمة A&B تصبح A%26B، ثم نضيف q= لنحصل على q=A%26B. [1][2]

هذا عقد مثالنا؛ لا نقرر كيف يفسر خادم مجهول الاستعلام. لا نمرر العنوان الكامل إلى دالة ترميز المكوّن.

نفذ مثالاً محلياً

encodeURIComponent يرمّز، وdecodeURIComponent يفك. [2]

console.log('q=' + encodeURIComponent('A&B'));
console.log(decodeURIComponent('A%26B'));

يطبع المثال q=A%26B ثم A&B. ينفذ معالجة نص محلية؛ لا يرسل طلباً ولا يثبت قبول خدمة للقيمة.

لا تكرر الترميز

% الحرفية تحتاج %25؛ نميز النص الخام من النص المرمز. [1]

100% يتحول إلى 100%25؛ إعادة encodeURIComponent تعطي 100%2525. فك مرة واحدة يعيد 100%25، لا الأصل. [1][2]

سمِّ متغيريك بحسب المرحلة: raw وencoded. احتفظ بالأصل، واستعمل الناتج في موضعه مرة؛ المثال يقصد طبقة ترميز واحدة.

مقارنة الترميز مرة ومرتين
طبقة ترميز واحدة.

افحص النتيجة قبل الاستعمال

قارن النص المستعاد بالأصل، ثم راجع مرحلة كل متغير. المثال يفحص نصاً محلياً فقط؛ لا يثبت قبول خادم. لا نعمم سلوك الدالة على كل قواعد الترميز أو على نصوص معيبة.

اقرأ أيضًا: نص الرابط ووجهته في HTML.

المراجع

  1. RFC 3986: ترميز النسبة المئوية
  2. ECMAScript: دوال ترميز URI

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