محول Punycode
تصبح التسمية münchen هي xn--mnchen-3ya، وهي صيغة ASCII التي تقبلها سجلات النطاقات والشهادات والأنظمة القديمة. رمّز تسمية Unicode واحدة في كل مرة، أو أعد تسمية xn-- إلى حروفها المقروءة. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- النص
- münchen
- وضع الحساب
- Encode
- النتيجة
- xn--mnchen-3ya
- نص يونيكود
- münchen
- جسم بونيكود
- mnchen-3ya
تحتاج أسماء النطاقات المُدوَّلة إلى ترميز متوافق مع ASCII حتى تنقل أنظمة DNS والشهادات والمحللات القديمة تسميات تضم أوملاوت وأحرفاً مشكولة وسيريالية وعربية أو CJK. Punycode (RFC 3492) هو خوارزمية Bootstring خلف بادئة xn-- المألوفة في A-labels الخاصة بـ IDNA. ترمّز هذه القدرة تسمية نطاق Unicode واحدة إلى ذلك الشكل ACE، أو تفك جسماً ACE أو Punycode خاماً إلى U-label Unicode الأصلي، بحقل mode بسيط وحساب صحيح حتمي. تُرفض أحرف الأبجدية غير الصالحة وأجسام xn-- الفارغة والبدائل المنفردة والسلاسل متعددة التسميات ذات النقاط بخطأ إدخال غير صالح واضح بدل الفساد الصامت.
رمّز تسمية نطاق Unicode إلى Punycode ACE (xn--)
يحوّل المحرك التسمية إلى أحرف صغيرة بطريقة مستقلة عن اللغة المحلية، ويرفض السلاسل الفارغة والمسافات وأحرف التحكم وأي نقاط مضمنة حتى لا تعامل عن طريق الخطأ اسم مضيف متعدد التسميات كتسمية DNS واحدة. تمر تسميات ASCII الخالصة دون تغيير وبدون بادئة xn--، بما يطابق ممارسة IDNA لأسماء LDH. عندما تحتوي التسمية على أي نقطة رمز غير ASCII، يشغّل المحرك مرمّز Punycode وفق RFC 3492 ويسبق النتيجة بـ xn-- لإنتاج A-label المستخدمة في ملفات منطقة DNS وSAN الشهادات وعروض WHOIS.
تتضمن الاستجابة result (تسمية ACE أو ASCII)، و unicode (U-label المطوية)، و punycode (الجسم بلا بادئة xn--)، و ace صحيحاً أو خاطئاً، و mode encode، و method rfc3492 حتى تثبّت الاختبارات كل حقل. المدخلات المتطابقة تنتج دائماً مخرجات متطابقة لأن المسار حساب نقي بلا شبكة ولا ملح عشوائي ولا ساعة جدارية. استخدم هذا المسار عندما تحتاج A-label آمناً للصق في قائمة ترحيل أو سطر منطقة أو تذكرة دعم يجب أن تبقى في أنظمة لا تقبل إلا أسماء مضيف ASCII.
فك ACE أو Punycode إلى Unicode ومعالجة الإدخال غير الصالح
اضبط mode على decode وضع تسمية ACE مثل xn--mnchen-3ya أو جسماً Punycode خاماً مثل mnchen-3ya في text. يزيل المحرك بادئة xn-- الأولى إن وُجدت، ويتحقق من أن الجسم يستخدم فقط الأبجدية الأساسية من حروف وأرقام وشرطات داخلية، ثم يشغّل مفكك RFC 3492 لاستعادة نقاط رمز Unicode—بما في ذلك أحرف المستوى التكميلي الممثلة بأزواج بدائل في سلاسل JavaScript. يعيد decode الناجح result و unicode كـ U-label، و punycode كالجسم، و ace صحيحاً عندما حمل الإدخال بادئة xn--، و mode decode، و method rfc3492.
فضّل هذه القدرة عندما تكون نية البحث محول punycode لتسميات نطاق مقروءة؛ تقسيم أسماء المضيف الكاملة والبحث عن اللواحق العامة وحل DNS الحي تنتمي لأدوات أخرى.
الاستخدام مع النطاقات والحدود العملية
استدعِ محول punycode المجاني داخل المتصفح لكتيبات الدعم وعروض الصف وفحوص التسميات لمرة واحدة دون تثبيت OpenSSL أو بيئات تشغيل لغات. تدفق نموذجي يرمّز تسمية علامة Unicode قبل كتابة A-label في قالب منطقة، ثم يفك أسماء ACE المنسوخة من ترويسات البريد أو سجلات الشهادات ليقرأ المشغّلون U-label المقصود. تدفق آخر يتحقق من أن عينات التوثيق ما زالت تُكمل الذهاب والإياب قبل الإصدار.
تسميات DNS محدودة بثلاثة وستين ثُمانية في شكل ACE، ويفرض هذا المحرك ذلك الحد عند encode حتى تفشل التسميات الدولية المفرطة مبكراً بدل إنتاج سلاسل غير قابلة للنشر. تتبع تسميات المصدر نفس قواعد الاحتفاظ لعناصر parse الأخرى في KIT، والنتائج آمنة للتثبيت في مثبتات التكامل المستمر لأن الخوارزمية حتمية بالكامل عبر العوازل.
حالات الاستخدام
تحضير منطقة DNS والشهادات
رمّز تسميات العلامات أو المدن Unicode إلى A-labels بصيغة xn-- قبل كتابة ملفات المنطقة وقوائم SAN لـ ACME أو قواعد مضيف الوكيل العكسي التي تقبل ASCII فقط.
قابلية القراءة في الدعم والسجلات
فك أسماء ACE من ترويسات البريد وسجلات شفافية الشهادات وأنظمة التذاكر إلى Unicode مقروء للوكلاء والعملاء.
الأسئلة الشائعة
كيف أفك تسمية xn-- إلى Unicode؟
اضبط mode على decode وضع تسمية ACE (أو جسم Punycode الخام بلا xn--) في text. يعيد حقل result الـ U-label بـ Unicode عندما يكون الترميز صالحاً.
ماذا يحدث مع تسمية Punycode غير صالحة؟
الأحرف غير القانونية وأجسام xn-- الفارغة والذهاب والإياب الفاشل والنقاط في السلسلة والتسميات الفارغة تُرفض ولا تُحسب.
هل يمكنني تحويل اسم مضيف كامل بعدة تسميات؟
لا. تقبل هذه القدرة تسمية واحدة في كل مرة وترفض النقاط. اقسم اسم المضيف ورمّز أو فك كل تسمية على حدة لمخرجات بحجم DNS متوقع.
لماذا لا تحصل تسمية ASCII الخالصة على البادئة xn--؟
لأنها لا تحتاج إليها: التسمية المكوّنة من حروف ASCII وأرقام وشرطات فقط تبقى كما هي، كما جرت العادة في أسماء النطاقات الدولية. ولا تظهر البادئة إلا إذا وُجد محرف واحد على الأقل من خارج ASCII.
لماذا تعيد الأداة الفحص بعد فك الترميز؟
بعد الفك يُعاد ترميز النتيجة ويجب أن تطابق التسمية المدخلة تمامًا. وبذلك تُكشف التسميات المقطوعة أو المعدّلة يدويًا، بدل إعطاء حروف تبدو معقولة لكنها خاطئة.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/enc/punycode \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"münchen"}'const res = await fetch("https://api.kit.forhosting.com/enc/punycode", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "münchen"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/punycode",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "münchen"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/punycode", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"münchen"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"münchen"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/punycode", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "münchen"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.punycode",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
رمّز تسمية نطاق Unicode إلى Punycode ACE (xn--)
أرسل جسماً JSON مع الحقل النصي الإلزامي text مضبوطاً على تسمية نطاق واحدة بـ Unicode—مثلاً اسم مدينة بأوملاوت، أو علامة بالخط الأصلي، أو تسمية يابانية—واترك mode عند الافتراضي encode أو اضبطه صراحةً على encode.
فك ACE أو Punycode إلى Unicode ومعالجة الإدخال غير الصالح
بعد الفك يعيد الترميز ويشترط ذهاباً وإياباً دقيقاً ضد الجسم، فتفشل سلاسل ACE المقطوعة أو المحررة يدوياً مغلقة بـ invalid_input بدل إرجاع رموز تبدو معقولة لكنها خاطئة. الأجسام الفارغة بعد xn--، والأحرف غير القانونية مثل علامات الترقيم، والنص غير ASCII المقدم لـ decode، والسلاسل متعددة التسميات ذات النقاط، وظروف الفيض كلها ترفع رسالة invalid_input وصفية ولا تُحسب على API المدفوعة مسبقاً.
استخدام API والتسعير وتدفقات DNS والحدود العملية
استخدم API المدفوعة مسبقاً KIT عندما يحتاج خلفية أو لوحة مسجّل أو وظيفة أتمتة شهادات أو SDK نفس خطوة encode أو decode تحت الرصيد بمبلغ $0.002 لكل عنصر ناجح؛ التحقق الفاشل لا يستهلك الرصيد أبداً بعد رفض المحرك للطلب. عالج كل تسمية من اسم مضيف متعدد التسميات على حدة—ترفض API النقاط عمداً لتتوافق صفحة SEO مع نية تحويل تسمية واحدة. يمكن لمؤلفي SDK ربط حقل result بزر نسخ بينما تجعل unicode و punycode وأعلام ace أمثلة OpenAPI مفهومة ذاتياً لمن يتعلمون IDNA لأول مرة.
حالات التكامل
التوثيق وفحوص golden للتكامل المستمر
ثبّت مثبتات encode و decode حتى تفشل عينات التوثيق واختبارات التكامل المستمر سريعاً إذا انحرف التعامل مع Punycode أو بادئة ACE.
أسئلة تقنية
كيف أحوّل تسمية نطاق Unicode إلى Punycode؟
أرسل JSON مع text مضبوطاً على تسمية واحدة (مثلاً münchen) و mode encode (أو احذف mode). يعيد حقل result شكل ACE مثل xn--mnchen-3ya.
هل محول punycode مجاني؟
تعمل أداة المتصفح مجاناً على جهازك. استدعاءات API تستخدم رصيد KIT المدفوع مسبقاً بمبلغ $0.002 لكل عنصر ناجح؛ إخفاقات التحقق لا تُحسب.