🔗

مشفر وفاكّ الروابط

شفّر أو فك تشفير الروابط ومعاملات الاستعلام بأمان — مع دعم كامل للـ Unicode.

وضع المكوّن يشفّر كل الأحرف الخاصة — الأفضل لقيمة استعلام أو معامل واحد.

ستظهر نتيجتك هنا

يوجد ترميز الروابط لأن الروابط صُمّمت قبل عقود حول مجموعة صغيرة من أحرف ASCII الآمنة، وكل ما عداها — المسافات، والحروف المُشكَّلة، والخط العربي، والإيموجي، وحتى بعض علامات الترقيم — يجب تهريبه متنكرًا. التنكّر هو الترميز بالنسبة المئوية: كل بايت غير آمن يصير % متبوعة برقمين ست عشريين. حين يعمل، لا تلاحظه أبدًا. وحين ينكسر، تحصل على الأخطاء الكلاسيكية: بحث عن "C++" يجد "C "، أو رابط إعادة توجيه يموت عند أول &، أو رابط بمسافات يعمل في تطبيق وينكسر في آخر. تُرمّز هذه الأداة وتفكّ الترميز في الاتجاهين، كليًا في متصفحك.

كيف يعمل المُرمِّز

الصق نصًا أو رابطًا في أي من الحقلين. يحوّل المُرمِّز الأحرف غير الآمنة إلى صيغة مُرمَّزة بالنسبة المئوية؛ ويعكسها فاكّ الترميز. يوجد وضعان متمايزان لأن جافاسكربت تقدّم دالتين بسلوك مختلف بشكل مهم: `encodeURIComponent` تُرمّز كل المحجوز، بما فيه & و= و? و/، وهو ما تريده لقيمة معامل واحدة؛ و`encodeURI` تترك تلك الأحرف البنيوية وشأنها، وهو ما تريده لرابط كامل. اختيار الخاطئة هو السبب الجذري لمعظم أخطاء الترميز.

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

الحرف → بايتات UTF-8 → %XX لكل بايت مسافة → %20 & → %26 ? → %3F é → %C3%A9 日 → %E6%97%A5 encodeURIComponent("a&b=c") → "a%26b%3Dc" encodeURI("https://x.com/a b") → "https://x.com/a%20b"

تُحوَّل الأحرف غير ASCII أولًا لبايتات UTF-8، ويحصل كل بايت على %XX خاص به — لهذا يصير é هروبين وحرف صيني ثلاثة. هذا يفسّر أيضًا تضخّم حجم النص غير اللاتيني المُرمَّز: كلمة عربية تتضاعف ثلاث مرات طولًا. علامة + فخّ تاريخي: في سلاسل الاستعلام فقط، قد يفسّر تطبيق + كمسافة، عُرف موروث من إرسال نماذج HTML. رابط فيه + حقيقية في معامل يجب ترميزها كـ%2B وإلا حوّلتها بعض الخوادم بصمت إلى مسافة.

ما يجب معرفته عن ترميز الروابط

  • 1استخدم encodeURIComponent للقيم وencodeURI للروابط الكاملة. ترميز رابط كامل بـencodeURIComponent يُدمّر بنيته — :// وكل / تصير هروبات. وترميز قيمة معامل بـencodeURI يترك & و= دون هروب، فتنزف القيمة في بنية المعاملات. هذا التمييز الواحد يمنع معظم الأخطاء الواقعية.
  • 2لا تُرمّز مرتين أبدًا. ترميز %20 مجددًا يُنتج %2520، والعَرَض المرئي هو ظهور %25 في الروابط، أو عرض المسافات كنص %20 حرفي. يحدث الترميز المزدوج عادةً حين تُرمّز طبقتان من نظام دفاعيًا كل على حدة. فكّ الترميز كليًا، ثم رمّز مرة واحدة بالضبط عند الحد النهائي.
  • 3سؤال + مقابل %20 يعتمد على موقعك. في جزء المسار من الرابط، + علامة زائد حرفية والمسافة يجب أن تكون %20. في سلاسل الاستعلام، تعامل خوادم كثيرة + كمسافة، اتباعًا لأعراف النماذج القديمة. %20 الخيار الآمن في كل مكان؛ و+ آمنة فقط إن عرفت سلوك الخادم.
  • 4الأحرف المحجوزة محجوزة في موضعها فقط. / في المسار بنية؛ و/ في قيمة استعلام مجرد بيانات ويجب ترميزها. نفس الحرف قد يكون قانونيًا في جزء من الرابط ويتطلّب ترميزًا في آخر — لهذا تفشل نصيحة «رمّز الرابط» العامة.
  • 5انتبه للترميز عند تصحيح سلاسل إعادة التوجيه والاستدعاءات. تمرّر تدفقات OAuth واستدعاءات الدفع روابط كاملة كمعاملات لروابط أخرى، ما يتطلّب ترميزًا متداخلًا. كل طبقة يجب ترميزها مرة — redirect_uri يفقد معاملات استعلامه بغموض هو دائمًا تقريبًا خطأ عمق ترميز.

الأسئلة الشائعة

ما الفرق بين encodeURI وencodeURIComponent؟

تهرب encodeURIComponent كل ما له معنى خاص، بما فيه & و= و? و/ و:، ما يجعلها صحيحة لترميز قيمة واحدة تدخل في رابط. وتحفظ encodeURI تلك الأحرف البنيوية، ما يجعلها صحيحة لتنظيف رابط كامل دون تدميره. القاعدة التقريبية: تبني معامل استعلام، استخدم encodeURIComponent؛ تُصلح مسافات في رابط كامل، استخدم encodeURI.

لماذا تظهر المسافات أحيانًا كـ+ وأحيانًا كـ%20؟

تاريخان مختلفان. يقول الترميز بالنسبة المئوية إن المسافة %20. لكن إرسال نماذج HTML، المُعرَّف منفصلًا في بدايات الويب، رمّز المسافات كـ+ في بيانات النماذج — وتسرّب ذلك العُرف لسلاسل الاستعلام. تقبل معظم الخوادم كليهما في الاستعلامات؛ و%20 فقط صالحة في المسارات. عند توليد روابط بنفسك، استخدم %20 دائمًا ورمّز أي + حرفية كـ%2B، ولن تصادف الغموض أبدًا.

لماذا يتحوّل نصي غير الإنجليزي لكل هذه الرموز؟

لأن الترميز يعمل على بايتات UTF-8 لا الأحرف. حرف لاتيني مُشكَّل يأخذ بايتين، فهروبين؛ والأحرف العربية والصينية تأخذ بايتين لثلاثة لكل منها؛ والإيموجي أربعة. الرابط لا يزال يعمل — تفكّه المتصفحات — لكن السلسلة أطول بكثير. غالبًا تعرض المتصفحات الحديثة الأحرف المفكوكة في شريط العنوان بينما تُرسل الصيغة المُرمَّزة على السلك.

ما الترميز المزدوج وكيف أُصلحه؟

هو ترميز نص مُرمَّز أصلًا: %20 تصير %2520، لأن % نفسها تُهرَب لـ%25. العَرَض هو ظهور %20 أو %25 حرفيًا حيث ينبغي وجود مسافة. يحدث حين تُرمّز طبقات متعددة دفاعيًا كل على حدة. الإصلاح معماري: فكّ الترميز عند حد الدخول، اعمل بسلاسل صرفة داخليًا، ورمّز مرة واحدة بالضبط عند حد الخروج.

هل تُرسَل بياناتي إلى أي مكان؟

لا. الترميز وفكّه يعملان كليًا في متصفحك بجافاسكربت — لا شيء يُرسَل أو يُسجَّل أو يُخزَّن. يمكنك التأكد بقطع الإنترنت؛ تواصل الأداة العمل لأنه لا يوجد خادم معني. هذا يهم حين تُصحّح روابط تحتوي رموزًا أو مُعرّفات جلسات.