Punycode
Исходный код: lib/punycode.js
Встроенная в Node.js версия модуля punycode устарела. В одной из будущих основных версий Node.js этот модуль будет удалён. Пользователям, которые сейчас используют модуль punycode, следует перейти на предоставляемый сообществом модуль Punycode.js. Для кодирования URL на основе punycode см. url.domainToASCII или, в более общем случае, API WHATWG URL.
Модуль punycode — это встроенная версия модуля Punycode.js. К нему можно обратиться с помощью:
const punycode = require('node:punycode'); copy 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)
-
string<string>
Метод punycode.decode() преобразует строку Punycode, содержащую только символы ASCII, в эквивалентную строку кодовых точек Unicode.
punycode.decode('maana-pta'); // 'mañana'
punycode.decode('--dqo34k'); // '☃-⌘' copy
punycode.encode(string)
-
string<string>
Метод punycode.encode() преобразует строку кодовых точек Unicode в строку Punycode, содержащую только символы ASCII.
punycode.encode('mañana'); // 'maana-pta'
punycode.encode('☃-⌘'); // '--dqo34k' copy
punycode.toASCII(domain)
-
domain<string>
Метод punycode.toASCII() преобразует строку Unicode, представляющую интернационализированное доменное имя, в Punycode. Преобразуются только части доменного имени, не входящие в ASCII. Вызов punycode.toASCII() для строки, содержащей только символы ASCII, не даст никакого эффекта.
// encode domain names
punycode.toASCII('mañana.com'); // 'xn--maana-pta.com'
punycode.toASCII('☃-⌘.com'); // 'xn----dqo34k.com'
punycode.toASCII('example.com'); // 'example.com' copy
punycode.toUnicode(domain)
-
domain<string>
Метод punycode.toUnicode() преобразует строку, представляющую доменное имя с символами, закодированными в Punycode, в Unicode. Преобразуются только части доменного имени, закодированные в Punycode.
// decode domain names
punycode.toUnicode('xn--maana-pta.com'); // 'mañana.com'
punycode.toUnicode('xn----dqo34k.com'); // '☃-⌘.com'
punycode.toUnicode('example.com'); // 'example.com' copy
punycode.ucs2
punycode.ucs2.decode(string)
-
string<string>
Метод punycode.ucs2.decode() возвращает массив, содержащий числовые значения кодовых точек каждого символа Unicode в строке.
punycode.ucs2.decode('abc'); // [0x61, 0x62, 0x63]
// surrogate pair for U+1D306 tetragram for centre:
punycode.ucs2.decode('\uD834\uDF06'); // [0x1D306] copy
punycode.ucs2.encode(codePoints)
-
codePoints<integer[]>
Метод punycode.ucs2.encode() возвращает строку на основе массива числовых значений кодовых точек.
punycode.ucs2.encode([0x61, 0x62, 0x63]); // 'abc' punycode.ucs2.encode([0x1D306]); // '\uD834\uDF06' copy
punycode.version
- Тип: <string>
Возвращает строку с номером текущей версии Punycode.js.
© Joyent, Inc. and other Node contributors
Licensed under the MIT License.
Node.js is a trademark of Joyent, Inc. and is used with its permission.
We are not endorsed by or affiliated with Joyent.
https://nodejs.org/dist/latest-v24.x/docs/api/punycode.html