JSON Formatter
Pretty-print, validate and minify JSON with precise error positions.
المطورون
ترميز الروابط ومعاملات الاستعلام بنسبة مئوية وفكّها.
العناوين لا تقبل إلا محارف ASCII، فيجب ترميز الحروف العربية — كوحدات UTF-8 بصيغة النسبة المئوية.
والحرف العربي الواحد يشغل بايتين في UTF-8، فيصبح ست محارف في العنوان المرمّز. أي أن كلمة «أدوات» تتحوّل إلى ثلاثين محرفًا تقريبًا.
وهذا يعمل في كل متصفح حديث: العنوان /أدوات/ يظهر مقروءًا في شريط العنوان ويُرسل مرمّزًا. لكنه نادرًا ما يكون خيارًا جيدًا للروابط الدائمة، لأن الصيغة المرمّزة هي ما يظهر في سجلات الخادم وأدوات التحليل وعند نسخ الرابط في رسالة — وهناك يصبح سطرًا طويلًا غير مقروء.
والأفضل للروابط الدائمة هو النقحرة اللاتينية: /adawat/ بدل /أدوات/. أما في قيم البحث والمعاملات فالعربية طبيعية ولا مشكلة فيها إذا رُمّزت صحيحًا.
اسم النطاق نفسه يخضع لقواعد أخرى: الترميز بالنسبة المئوية غير مسموح فيه، ويُستخدم بدلًا منه ترميز Punycode.
يحوّل Punycode النطاقات غير اللاتينية إلى ASCII، ويُعرف ببادئة xn--. فالنطاق «موقع.شبكة» يصبح داخليًا سلسلة تبدأ بـ xn--، والصيغتان تؤديان إلى الوجهة نفسها.
وهذا ليس أمرًا نظريًا في المنطقة: نطاقات المستوى الأعلى بالعربية موجودة ومستخدمة — منها ".عرب" و".امارات" و".السعودية" و".مصر" — وقد اعتمدت منذ سنوات.
والمسألة العملية أن أنظمة قديمة كثيرة لا تتعامل معها: بعض أدوات التحقق من البريد الإلكتروني، وبعض أنظمة إدارة المحتوى، وأدوات فحص الشهادات. وهذه تحتاج صيغة Punycode لا الصيغة العربية.
وهناك جانب أمني كذلك: محارف من كتابات مختلفة قد تتشابه بصريًا. ولذلك تعرض المتصفحات صيغة Punycode عند خلط الكتابات في نطاق واحد، لكشف محاولات الانتحال.
أكثر خطأ شيوعًا هو الخلط بين ترميز العنوان الكامل وترميز المكوّن.
ترميز العنوان الكامل مخصّص لرابط كامل، ويترك المحارف ذات المعنى البنيوي — النقطتين والشرطة المائلة وعلامة الاستفهام والعلامة & — دون مساس. أما ترميز المكوّن فمخصّص لقيمة واحدة ويرمّز هذه المحارف أيضًا.
والخطأ الكلاسيكي: تمرير رابط كامل كقيمة معامل دون ترميزه كمكوّن. فأول شرطة مائلة تُنهي القيمة ظاهريًا ويُقرأ الباقي كمعامل مستقل — وهذا عطل شائع في إعادة التوجيه بعد تسجيل الدخول.
وعلامة الجمع: تعني في معاملات الاستعلام مسافة تاريخيًا. فالجمع الحقيقي — في رقم هاتف مثل +971 — يجب أن يُكتب %2B، وإلا تحوّل إلى مسافة عند القراءة. وهذا يهمّ في المنطقة أكثر من غيرها، لأن أرقام الهواتف تُكتب بصيغة دولية دائمًا.
تُرمّز بصيغة النسبة المئوية لوحدات UTF-8. أما في اسم النطاق فتُستخدم صيغة Punycode ببادئة xn--.
تحويل النطاقات غير اللاتينية إلى ASCII. نطاقات مثل ".عرب" و".امارات" تُخزَّن داخليًا بهذه الصيغة.
الأفضل لا. تعمل تقنيًا لكن الصيغة المرمّزة تظهر في السجلات والرسائل غير مقروءة. استخدم النقحرة اللاتينية.
لأن + تعني مسافة في معاملات الاستعلام. الجمع الحقيقي يُكتب %2B — وهذا مهم في أرقام الهواتف الدولية.
ترميز مرتين، فيصبح %20 هو %2520. وعند الفك يبقى %20 نصًا ظاهرًا.
لا. كل شيء يجري داخل هذه الصفحة.