الترميز

Punycode encode/decode

ترميز أسماء النطاقات التي تحتوي على أحرف Unicode (IDN) إلى صيغة Punycode المتوافقة مع ASCII (xn--) والعكس.

The DNS system historically only supports ASCII characters, so domain names with Cyrillic, CJK, or other non-ASCII characters (IDN) are encoded as Punycode — an ASCII-compatible form prefixed with xn--. This tool encodes and decodes such domains.

How to use it

Common uses

Things to keep in mind

Visually similar characters from different scripts (like Cyrillic "а" and Latin "a") can form a domain that looks identical to a known brand — this is the basis of homograph phishing.

Not every browser shows decoded Unicode the same way: when a domain label mixes scripts, browsers often deliberately show the raw xn-- form as a warning sign.

مقالة عن هذه الأداة: Punycode: كيف تعمل النطاقات الدولية في DNS

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

ما هو Punycode ولماذا يبدأ الناتج بـ xn--؟

Punycode طريقة لتحويل أسماء النطاقات الدولية (IDN) التي تحتوي أحرف Unicode مثل العربية أو الألمانية إلى صيغة متوافقة مع ASCII فقط، لأن نظام DNS يدعم تاريخيًا الأحرف اللاتينية الأساسية فقط. البادئة xn-- تُعلم المتصفحات وخوادم DNS أن ما يليها Punycode يجب فك ترميزه.

ما علاقة Punycode بمخاطر التصيّد باستخدام نطاقات متشابهة؟

يمكن لمهاجم تسجيل نطاق يحتوي أحرف Unicode تبدو مطابقة بصريًا لحروف لاتينية (هجوم homograph)، مثل استبدال الحرف a بحرف سيريلي مشابه، وعندها يعرض المتصفح النطاق بصيغة xn-- الغريبة أو بالشكل الأصلي حسب إعداداته، لذا يُنصح بالتحقق من الرابط الفعلي عند الشك.

هل يتم إرسال اسم النطاق الذي أدخله إلى خادم للتحقق منه؟

لا، التحويل بين Unicode وPunycode يتم بالكامل محليًا في متصفحك دون أي اتصال بخادم DNS أو أي جهة خارجية.

كيف يمكن التعرف على أن رابطًا يستخدم Punycode؟

يحمل النطاق المُرمَّز دائمًا البادئة xn-- قبل كل مقطع يحتوي أحرفًا غير ASCII. إذا رأيت في شريط العنوان أو في رسالة بريد نطاقًا يبدأ بـ xn--، فهذه علامة على IDN — ويُستحسن التحقق من النص المختبئ خلف الترميز.

هل تعرض جميع المتصفحات الأحرف السيريلية في شريط العنوان بنفس الطريقة؟

لا. بعض المتصفحات تعرض نسخة Unicode المفكوكة فقط إذا كانت جميع أحرف النطاق تنتمي إلى أبجدية واحدة، أما عند مزج الأبجديات (وهي علامة على هجوم homograph) فتعرض عمدًا سجل xn-- الخام بدلاً من الأحرف الأصلية.

مقالات: الترميز

Base64: ما فائدة الترميز وكيف يعمل

كيف يحوّل Base64 البيانات الثنائية إلى نص ASCII، ومتى نحتاج ذلك فعلاً.

Base32: ما الفرق بينه وبين Base64 ومتى يكون أنسب

أبجدية Base32 التي لا تميّز بين حالة الأحرف، والحالات التي تكون فيها أنسب من Base64.

URL Encode/Decode: الترميز بالنسبة المئوية في الروابط

كيف تتحول الأحرف الخاصة في العناوين والمعاملات إلى تسلسلات %XX.

HTML Entities: كيف تعرض الأحرف الخاصة بأمان

لماذا يجب الهروب من الأحرف < > & وكيف يمنع ذلك تعطّل الترميز.

JWT: بنية الرمز وماذا يعني "فك ترميز" JWT

الأجزاء الثلاثة لرمز JWT، ولماذا فك الترميز ليس نفس التحقق من التوقيع.

Unicode Escape: ماذا تعني تسلسلات \uXXXX

من أين تأتي تسلسلات مثل \u0041 في JSON وسلاسل جافاسكريبت، وماذا تعني.

ROT13 وشيفرة قيصر: استبدال بسيط للأحرف

لماذا تجعل إزاحة 13 حرفًا خوارزمية ROT13 عكسية ذاتيًا، ولماذا لا تزال تُستخدم اليوم.

شيفرة مورس: كيف يتحول النص إلى نقاط وشرطات

مبدأ ترميز الحروف كنقاط وشرطات، وأين لا تزال شيفرة مورس تُستخدم اليوم.

Data URI: متى تُضمَّن الصور مباشرة في الكود

كيف يضمّن Data URI محتوى الملف مباشرة في HTML أو CSS، ومتى يستحق ذلك العناء.

Gzip + Base64: ضغط البيانات لنقلها كنص

لماذا تُرمَّز البيانات الثنائية المضغوطة أيضًا بـ Base64 قبل وضعها في حقل نصي.

XML Entities: الهروب من الأحرف في مستندات XML

الكيانات الخمس الإلزامية في XML التي بدونها يتعطّل المستند أثناء التحليل.