ترميز عناوين URL: لماذا يتحول النص العربي إلى %D8%A3؟
ما ترميز النسبة المئوية في الروابط، والفرق بين ترميز جزء من الرابط وترميزه كاملًا، وكيف تُبنى روابط عربية سليمة لا تنكسر، مع أمثلة جاهزة.
لاحظت يومًا رابط بحث عن كلمة عربية يظهر فيه %D8%A3%D8%AF%D9%88%D8%A7%D8%AA فيبدو كطلاسم؟ هذه ليست تشفيرًا ولا مشكلة في المتصفح؛ هذه هي الطريقة القياسية لكتابة نص غير لاتيني داخل رابط. فهمها يحل مهارة عملية يحتاجها كل من يبني روابط: الدقة في ترميز الجزء الصحيح فقط دون كسر بنية الرابط.
ماذا يحدث تقنيًا؟
عناوين URL معرّفة في المعيار لتعمل بمجموعة محارف محدودة (حروف لاتينية وأرقام وعدد قليل من الرموز)، وأي محرف آخر — عربية، مسافة، علامة يونانية — يُنقل إلى بايتاته بترميز UTF-8 ثم يُكتب بصيغة «نسبة مئوية»: بعدد سادس عشري لكل بايت. فالحرف «أ» في UTF-8 هو بايتان D8 A3 فيظهر %D8%A3، والمسافة تظهر %20 لأنها بايت واحد بترميز 20. لهذا يطول الرابط المرمّز: كل حرف عربي يُصبح ثلاثة محارف مكتوبة («%» وخانتان).
المثال الكامل
كلمة «أدوات عربية» (11 حرفًا ومسافة) تصبح ترميزها %D8%A3%D8%AF%D9%88%D8%A7%D8%AA%20%D8%B9%D8%B1%D8%A8%D9%8A%D8%A9 — 63 محرفًا. وهذا يفسر لماذا تبدو الروابط العربية أطول ثلاثة أضعاف في بعض المتصفحات ولوحات التحليل. الجيد أن نصوص المتصفح الحديثة تُظهر الرابط العربي كما هو وتُبقي الترميز داخليًا، لكن عند بناء رابط يدويًا في كود خلفي أو ملف إعداد يجب كتابة الترميز بنفسك.
الخطأ الأشهر: ترميز الرابط كاملًا بدالة الجزء
هنا يقع معظم المبتدئين: إذا مرّرت الرابط الكامل على الدالة المخصصة لترميز القيم تُرمّز حتى محارف البنية `: / ? & =` فيتحول الرابط إلى نص صالح لا معنى له كرابط. القاعدتان:
- قيمة أو عبارة بحث داخل الرابط ← يجب ترميز كل شيء حتى `&` و`=` حتى لا تُكسر بنية المعاملات (نمط القيمة الواحدة).
- رابط كامل جاهز ← يُرمّز النص غير الآمن فقط وتُترك محارف البنية `:/?#&=+$` كما هي ليبقى رابطًا عاملًا.
مثال للتوضيح: ترميز رابط كامل يبقي الشكل هكذا: https://adawati.life/search?q=%D8%A3%D8%AF%D9%88%D8%A7%D8%AA%20%D8%B9%D8%B1%D8%A8%D9%8A%D8%A9 — لاحظ أن `https://` و`?` و`=` لم تُمس، بينما العربية والمسافة رُمّزتا. ولو مرّرت الرابط نفسه على دالة ترميز القيم لتحوّل `?` إلى %3F و`=` إلى %3D فانكسرت المعاملات.
حالات عملية
- بناء رابط بحث لموقع لا يقبل العربية على نحو سليم في خانة الاستعلام (`?q=`).
- فك رابط مرمّز وصل من تتبع أو تحليل وتحويله إلى نص مقروء لمراجعة قيمة الاستعلام.
- فحص المعاملات المزدوجة: `%20` و`+` يعبران عن المسافة — `+` في نماذج URL المشفرة وليس في المسارات.
- تجهيز روابط قطع بعلامات خاصة (`&` في اسم منتج يحتوي شركة تجارية) — وهو موضع خطأ شهير يقطع الاستعلام قبل نهايته.
أخيرًا: الترميز ليس تشفيرًا. أي رابط مرمّز يمكن فكه فورًا وعرضه بوضوح — إنه تمثيل نصي وفق معيار، ولا يخفي شيئًا. لا تضع فيه بيانات يجب أن تبقى سرية.
جرّب بنفسك: مرمّز ومفكك عناوين URL (Encoder / Decoder)
طبّق ما قرأته مباشرة عبر الأداة المجانية — الحساب يتم محليًا في متصفحك.
أسئلة شائعة
لماذا يظهر الرابط عندي بالعربية بلا ترميز فيعمل بشكل صحيح؟
لأن المتصفح يُطبّق الترميز تلقائيًا عند الإرسال ويعرض الشكل المقروء على الشاشة، ثم يعيد قراءته مفكوكًا. الترميز اليدوي لا يزال مطلوبًا عند بناء الروابط في كود أو إعدادات تُرسل لخوادم لا تتسامح مع المحارف غير المرمّزة.
ما الفرق بين %20 و+ في ترميز المسافة؟
%20 هو الترميز القياسي للمسافة في أي جزء من الرابط. أما + فيُفسَّر كمسافة في سلسلة الاستعلام (query) في نمط application/x-www-form-urlencoded، ولا يجوز استخدامه مسافة في المسار. اعتمد %20 فهو صالح في الحالتين.
لماذا فشل فك الترميز وقال إن المدخل غير صالح؟
أشهر ثلاثة أسباب: علامة % يتبعها تسلسل سداسي ناقص (مثل %2 بدل %20)، أو محرف غير سداسي بعد النسبة (%ZZ)، أو محرف لم يُرمّز مما أدى لفك غير صالح. صحح التسلسل ثم أعد المحاولة، والأداة تعرض الخطأ بدل نتيجة ناقصة.
مقالات ذات صلة
JSON: التنسيق والتحقق وإصلاح الأخطاء الأكثر شيوعًا
قواعد صيغة JSON الصارمة التي تسبب معظم أخطاء التحليل: الفواصل الزائدة، علامات الاقتباس، والتعليقات الممنوعة — وكيف تحدد موضع الخطأ وتصلحه بسرعة.
اقرأ المزيدBase64: ترميز النقل وليس تشفيرًا — متى تستخدمه ولماذا يكبر الحجم؟
ما ترميز Base64 فعليًا، ولماذا يزيد الحجم بالثلث، وكيف يتعامل مع النصوص العربية عبر UTF-8، والتحذير الأمني الأهم: هو ترميز وليس حماية.
اقرأ المزيدأنماط كتابة المتغيرات: الفرق بين camelCase وsnake_case وkebab-case
أي نمط كتابة تختاره لأسماء المتغيرات والملفات وعناوين الروابط؟ شرح عملي لأنماط camelCase وsnake_case وkebab-case وPascal Case مع قواعد التحويل.
اقرأ المزيد