HTML Encoder

HTML Encoder / Decoder

هرّب `& < > " '` إلى HTML entities آمنة، أو فك ترميز نص مرمَّز بـ entities إلى نص عادي. أربعة مستويات ترميز — Minimal وNamed وNumeric وAll non-ASCII. آمن مع UTF-8 + emoji + CJK، داخل متصفحك.

افتراضياً اختر Minimal — هرّب فقط & < > " '، وهي الأحرف الخمسة التي تكسر سياقات HTML body / attribute. هذا ما يفعله كل محرك قوالب حديث. استخدم Named entities إذا كنت تريد copyright / nbsp / arrows وغيرها كرموز مقروءة (&copy; بدلاً من &#169;). استخدم Numeric عند إرسال HTML عبر أنابيب قد لا تفهم named entities. استخدم All non-ASCII عند الاستهداف الصارم لأنظمة ASCII فقط (خوادم بريد قديمة، APIs معطوبة).

&apos; صالح في XML وHTML5، ولكنه ليس كذلك في HTML 4.01 — تعرضه المتصفحات القديمة كنص حرفي '. المرجع الرقمي &#39; يعمل في كل مكان. ويقبل المفكّك &apos; كإدخال للتوافق.

الإدخال
الإخراج

مبنية لإخراج HTML آمن

هرّب محتوى المستخدم للقوالب، وفكّ ترميز البيانات المرمَّزة بـ entities — مع لمسات صغيرة تجعل استخدامها ممتعاً فعلاً.

أربعة أوضاع ترميز

Minimal يهرّب الأحرف الخمسة غير الآمنة في HTML فقط (& < > " ') — الإعداد الافتراضي الصحيح للمحتوى العادي الذي ينشئه المستخدم. Named يستخدم HTML5 entities مقروءة مثل &copy; / &nbsp; / &hearts; حيث يوجد لها مكافئ. Numeric يرمّز كل codepoint غير ASCII بصيغة &#NN;. All non-ASCII يرمّز كل codepoint خارج ASCII القابل للطباعة من أجل الأنابيب القديمة / المقتصرة على ASCII.

فك ترميز أي entity

يتعامل المفكّك مع named entities (&copy;) والعشرية الرقمية (&#169;) والست عشرية الرقمية (&#xA9;). تتم الدورة الكاملة لـ codepoints من نوع surrogate pair (emoji والكتابات القديمة) بشكل صحيح عبر UTF-16.

معاينة مباشرة

يتحدّث الإخراج مع كل ضغطة مفتاح — لا حاجة للضغط على زر Encode / Decode. بدّل الاتجاه بنقرة واحدة؛ زر Swap ينقل الإخراج عائداً إلى الإدخال لتسلسل التحويلات.

آمن مع UTF-8 + emoji + CJK

كل codepoint في Unicode يدور كاملاً: 中文، العربية، русский، हिंदी، 🎉، Þorgeir. يستخدم المرمّز التكرار حسب codepoint (وليس charAt) لتبقى surrogate pairs سليمة.

خصوصية بالتصميم

يبقى نصك على جهازك. المرمّز والمفكّك وجدول named-entity كلها تعمل كـ JavaScript محلياً. افتح DevTools ← Network وتحقق من عدم وجود أي طلبات صادرة.

صغيرة + سريعة

JavaScript خالص، بدون أي framework runtime. التحميل البارد أقل من 25 KB مضغوطة بـ gzip. مستند HTML بحجم 100 KB يُرمَّز في أقل من 5 ms.

كيفية ترميز أو فك ترميز HTML entities

أربع خطوات من النص الخام إلى إخراج آمن مع entities.

  1. 1

    الصق النص

    أفلِت نصاً عادياً أو HTML في لوحة الإدخال. أي شيء مقبول — تعليقات المستخدمين، تدوينات، emoji، CJK، كتابات RTL. يكرّر المرمّز حسب codepoint لتبقى التسلسلات متعددة البايتات سليمة.

  2. 2

    اختر الاتجاه + الوضع

    اضبط الاتجاه على Encode (نص ← entities) أو Decode (entities ← نص). للترميز، اختر الوضع: Minimal للقوالب، Named لـ entities مقروءة، Numeric لكل ما هو غير ASCII بصيغة &#NN;، All non-ASCII لإخراج ASCII فقط.

  3. 3

    شاهد المعاينة المباشرة

    يتحدّث الإخراج مع كل ضغطة مفتاح. قارن الأوضاع في الوقت الفعلي بتغيير القائمة المنسدلة. استخدم Swap لنقل الإخراج عائداً إلى الإدخال — مفيد للتحقق من الدورة الكاملة (ترميز ثم فك = الأصل).

  4. 4

    انسخ أو نزّل

    استخدم أيقونة النسخ لدفع النتيجة إلى الحافظة، أو أيقونة التنزيل لحفظها كـ output.encode.html / output.decode.txt. يُظهر فرق الحجم (chars / bytes داخل ← خارج) بدقة كم تضخّم أو انكمش النص بسبب الترميز.

مبنية لعمل تطوير الويب اليومي

أربع سيناريوهات شائعة حيث تتفوق أداة متصفح خصوصية أولاً على لصق الشيفرة في مرمّز عشوائي عبر الإنترنت.

تضمين محتوى المستخدم بأمان داخل قالب

تعليقات المستخدمين، استجابات النماذج، استعلامات البحث — أي شيء يأتي من الخارج وينتهي داخل <p> أو <li> أو سمة. مرّره عبر ترميز Minimal-mode قبل دمج السلاسل في HTML الخاص بك، وستكون بأمان من الترميز المكسور وأبسط حمولات XSS.

قراءة بيانات مرمَّزة بـ entities من API

بعض APIs تعيد سلاسل مرمّزة سابقاً بـ entities (موجزات RSS، تصدير CMS معينة، HTML مأخوذ بـ scraping). الصق وانقر Decode، واسترجع Unicode الأصلي. يتعامل المفكّك مع entities المسماة والعشرية والست عشرية بما فيها surrogate pairs.

أسطر موضوع البريد + meta tags

<title>، <meta name="description">، <meta property="og:title"> — كلها تحتاج إلى ترميز entity للأحرف الخاصة. رمّز عنوانك مرة، والصقه في الثلاثة.

محتوى حساس لا يمكن إرساله إلى خدمة طرف ثالث

محتوى CMS داخلي، بيانات عملاء، قوالب محمية باتفاقية NDA — أي شيء لا يمكنك لصقه في مرمّز سحابي. تبقي الأداة العاملة في المتصفح كل بايت على حاسوبك. افتح DevTools ← Network وتحقق من أن لا شيء يغادر.

خاصة 100% — تعمل في متصفحك

نصك لا يغادر جهازك أبداً. افتح DevTools ← Network وسترى صفر طلبات صادرة أثناء الترميز أو فك الترميز.

  • المرمّز والمفكّك وجدول البحث لـ named-entity كلها تعمل بـ JavaScript على جهازك — لا تحويل من جهة الخادم، ولا API طرف ثالث.
  • تتم معالجة codepoints من نوع surrogate pair (emoji والكتابات القديمة) عبر التكرار حسب codepoint، وليس عبر تعيين على مستوى البايت — لذا يبقى لصق 🎉 كـ 🎉 بعد الدورة الكاملة.
  • لا تسجيل، ولا قياس عن بعد على محتوى النص. نستخدم ملف تعريف ارتباط واحداً فقط لحالة موافقة ملفات تعريف الارتباط، وآخر لتفضيل اللغة.

أدلة ذات صلة

قراءات مختارة بعناية حول HTML escaping وجداول entities والقوالب الآمنة.

أسئلة متكررة

أي وضع يجب أن أختار؟

افتراضياً اختر Minimal — هرّب فقط & < > " '، وهي الأحرف الخمسة التي تكسر سياقات HTML body / attribute. هذا ما يفعله كل محرك قوالب حديث. استخدم Named entities إذا كنت تريد copyright / nbsp / arrows وغيرها كرموز مقروءة (&copy; بدلاً من &#169;). استخدم Numeric عند إرسال HTML عبر أنابيب قد لا تفهم named entities. استخدم All non-ASCII عند الاستهداف الصارم لأنظمة ASCII فقط (خوادم بريد قديمة، APIs معطوبة).

لماذا يهرّب `'` كـ `&#39;` بدلاً من `&apos;`؟

&apos; صالح في XML وHTML5، ولكنه ليس كذلك في HTML 4.01 — تعرضه المتصفحات القديمة كنص حرفي '. المرجع الرقمي &#39; يعمل في كل مكان. ويقبل المفكّك &apos; كإدخال للتوافق.

هل ستبقى أحرف emoji وCJK سليمة؟

نعم. يكرّر المرمّز codepoints (وليس وحدات UTF-16 code units)، لذا تصبح emoji مثل 🎉 (U+1F389) &#127881; عند الترميز وتعود سليمة عبر فك الترميز. الأمر نفسه لـ CJK (中文 ← &#20013;&#25991; في وضع numeric).

هل من الآمن تضمين إدخال المستخدم مباشرة في HTML بعد الترميز؟

في HTML body والسمات — نعم، مع وضع Minimal. أما لسياقات URL (href="...") فتحتاج أيضاً إلى URL encoding. أما لـ JavaScript أو CSS مضمّن، فلا HTML ولا URL encoding كافٍ — استخدم محرّك قوالب مناسب يفهم تلك السياقات. لا تلصق أبداً إدخال مستخدم غير مهرَّب داخل كتلة <script>.

هل يُرسَل أي شيء إلى خادمكم؟

لا. المرمّز والمفكّك وجدول البحث لـ named-entity كلها تعمل بـ JavaScript على جهازك. افتح DevTools ← Network وسترى صفر طلبات صادرة أثناء الترميز أو فك الترميز. الصق أسراراً وبيانات عملاء وقوالب داخلية — لا شيء يغادر حاسوبك.