Skip to content

Punycode

مسحوب منذ الإصدار: v7.0.0

[مستقر: 0 - مسحوب]

مستقر: 0 ثبات: 0 - مسحوب

رمز المصدر: lib/punycode.js

إن إصدار وحدة punycode المضمّنة في Node.js أصبح مسحوبًا. في إصدار رئيسي مستقبلي من Node.js، سيتم إزالة هذه الوحدة. يجب على المستخدمين الذين يعتمدون حاليًا على وحدة punycode التبديل إلى استخدام وحدة Punycode.js المُقدّمة من مستخدمي النظام بدلاً من ذلك. للتشفير URL القائم على Punycode، راجع url.domainToASCII أو، بشكل عام، واجهة برمجة تطبيقات URL WHATWG.

وحدة punycode هي إصدار مضمّن من وحدة Punycode.js. ويمكن الوصول إليها باستخدام:

js
const punycode = require('node:punycode')

Punycode هو نظام ترميز أحرف مُعرّف بواسطة RFC 3492 وهو مُخصّص بشكل أساسي للاستخدام في أسماء النطاقات المُدوّلة دوليًا. نظرًا لأن أسماء المضيفين في عناوين URL محدودة بحروف ASCII فقط، فيجب تحويل أسماء النطاقات التي تحتوي على أحرف غير ASCII إلى ASCII باستخدام نظام Punycode. على سبيل المثال، الحرف الياباني الذي يُترجم إلى الكلمة الإنجليزية، 'example' هو '例'. يُمثّل اسم النطاق المُدوّل دوليًا، '例.com' (ما يُعادل 'example.com') بواسطة Punycode كسلسلة ASCII 'xn--fsq.com'.

توفر وحدة punycode تطبيقًا بسيطًا لمعيار Punycode.

وحدة punycode هي تبعية تابعة لجهة خارجية تُستخدم بواسطة Node.js وتُتاح للمُطوّرين كوسيلة راحة. يجب توجيه الإصلاحات أو التعديلات الأخرى على الوحدة إلى مشروع Punycode.js.

punycode.decode(string)

مضاف في: v0.5.1

تقوم طريقة punycode.decode() بتحويل سلسلة Punycode من أحرف ASCII فقط إلى السلسلة المُكافئة من نقاط التعليمات البرمجية Unicode.

js
punycode.decode('maana-pta') // 'mañana'
punycode.decode('--dqo34k') // '☃-⌘'

punycode.encode(string)

تم الإضافة في: v0.5.1

تقوم طريقة punycode.encode() بتحويل سلسلة من نقاط رمز Unicode إلى سلسلة Punycode من أحرف ASCII فقط.

js
punycode.encode('mañana') // 'maana-pta'
punycode.encode('☃-⌘') // '--dqo34k'

punycode.toASCII(domain)

تم الإضافة في: v0.6.1

تقوم طريقة punycode.toASCII() بتحويل سلسلة Unicode التي تمثل اسم نطاق دولي إلى Punycode. سيتم تحويل الأجزاء غير ASCII من اسم النطاق فقط. لن يكون لاستدعاء punycode.toASCII() على سلسلة تحتوي بالفعل على أحرف ASCII فقط أي تأثير.

js
// ترميز أسماء النطاقات
punycode.toASCII('mañana.com') // 'xn--maana-pta.com'
punycode.toASCII('☃-⌘.com') // 'xn----dqo34k.com'
punycode.toASCII('example.com') // 'example.com'

punycode.toUnicode(domain)

تم الإضافة في: v0.6.1

تقوم طريقة punycode.toUnicode() بتحويل سلسلة تمثل اسم نطاق يحتوي على أحرف مشفرة Punycode إلى Unicode. سيتم تحويل الأجزاء المشفرة Punycode من اسم النطاق فقط.

js
// فك تشفير أسماء النطاقات
punycode.toUnicode('xn--maana-pta.com') // 'mañana.com'
punycode.toUnicode('xn----dqo34k.com') // '☃-⌘.com'
punycode.toUnicode('example.com') // 'example.com'

punycode.ucs2

تم الإضافة في: v0.7.0

punycode.ucs2.decode(string)

تم الإضافة في: v0.7.0

تقوم طريقة punycode.ucs2.decode() بإرجاع مصفوفة تحتوي على قيم نقطة الرمز العددية لكل رمز Unicode في السلسلة.

js
punycode.ucs2.decode('abc') // [0x61, 0x62, 0x63]
// زوج بديل لـ U+1D306 رباعي لمركز:
punycode.ucs2.decode('\uD834\uDF06') // [0x1D306]

punycode.ucs2.encode(codePoints)

أضيف في: v0.7.0

ترجع طريقة punycode.ucs2.encode() سلسلة بناءً على مصفوفة من قيم نقاط التعليمات البرمجية العددية.

js
punycode.ucs2.encode([0x61, 0x62, 0x63]) // 'abc'
punycode.ucs2.encode([0x1d306]) // '\uD834\uDF06'

punycode.version

أضيف في: v0.6.1

ترجع سلسلة تحدد رقم إصدار Punycode.js الحالي.