ماژول Punycode در Node.js

ماژول punycode در Node.js پیاده‌سازی ساده‌ای از استاندارد Punycode (RFC 3492) است که برای تبدیل نام‌های دامنهٔ بین‌المللی (IDN) به رشته‌های ASCII استفاده می‌شود. از آنجا که نام‌های میزبان در URLها باید فقط شامل کاراکترهای ASCII باشند، دامنه‌هایی با کاراکترهای غیر-ASCII باید با استفاده از Punycode رمزگذاری شوند. این ماژول از نسخهٔ 7.0.0 به بعد منسوخ شده و در نسخه‌های آینده حذف خواهد شد. توسعه‌دهندگان باید به جای آن از کتابخانهٔ مستقل Punycode.js یا APIهای WHATWG URL استفاده کنند.

Punycode RFC 3492Internationalized Domain Names (IDN)punycode.encode / punycode.decodepunycode.toASCII / punycode.toUnicodepunycode.ucs2.encode / punycode.ucs2.decode

~1 دقیقه مطالعه • بروزرسانی ۹ دی ۱۴۰۴

1. معرفی


Punycode یک روش رمزگذاری کاراکتر است که رشته‌های Unicode را به ASCII تبدیل می‌کند. این روش برای دامنه‌های بین‌المللی ضروری است تا بتوانند در سیستم‌های مبتنی بر ASCII استفاده شوند.


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

2. متدهای اصلی


  • punycode.encode(string): تبدیل رشتهٔ Unicode به Punycode.
  • punycode.decode(string): تبدیل رشتهٔ Punycode به Unicode.

punycode.encode('mañana'); // 'maana-pta'
punycode.decode('maana-pta'); // 'mañana'

3. تبدیل دامنه‌ها


  • punycode.toASCII(domain): تبدیل دامنهٔ Unicode به Punycode.
  • punycode.toUnicode(domain): تبدیل دامنهٔ Punycode به Unicode.

punycode.toASCII('mañana.com');  // 'xn--maana-pta.com'
punycode.toUnicode('xn--maana-pta.com'); // 'mañana.com'

4. کار با UCS2


  • punycode.ucs2.decode(string): بازگرداندن آرایه‌ای از کدپوینت‌ها.
  • punycode.ucs2.encode(codePoints): ساخت رشته از آرایهٔ کدپوینت‌ها.

punycode.ucs2.decode('abc'); // [0x61, 0x62, 0x63]
punycode.ucs2.encode([0x61, 0x62, 0x63]); // 'abc'

5. نسخه


  • punycode.version: نمایش نسخهٔ فعلی Punycode.js.

6. وضعیت و جایگزین‌ها


ماژول punycode در Node.js منسوخ شده و در آینده حذف خواهد شد. برای استفادهٔ جدید باید از:


  • کتابخانهٔ مستقل Punycode.js.
  • متدهای url.domainToASCII یا APIهای WHATWG URL.

نتیجه‌گیری


ماژول punycode ابزاری ساده برای کار با دامنه‌های بین‌المللی در Node.js بود، اما اکنون منسوخ شده است. توسعه‌دهندگان باید به سمت استفاده از کتابخانه‌های مستقل یا APIهای مدرن حرکت کنند تا از پشتیبانی آینده و استانداردهای جدید بهره‌مند شوند.


نوشته و پژوهش شده توسط دکتر شاهین صیامی