Skip to content

Deprecated

https://nodejs.org/docs/latest/api/punycode.html

Punycode 是一种特殊的编码方式,用于将 Unicode 字符串转换为 ASCII 字符串,主要应用于国际化域名 (IDN, Internationalized Domain Name) 的表示。

由于传统的 DNS 系统只支持 ASCII 字符,所以 Punycode 提供了一种方式,将包含非 ASCII 字符的域名转化为 DNS 可以识别的形式。

不过在 Node.js v7.0.0 及以后,这个模块已经被弃用,转而建议使用 url 模块中的 URL 类来处理 IDN

js
// const punycode = require('punycode')

// // 编码
// const ascii = punycode.encode('你好')
// console.log(ascii) // 输出类似于 'w658h'

//  // 解码
// const unicode = punycode.decode('w658h')
// console.log(unicode) // 输出 '你好'

const { URL } = require('node:url')

// 编码
const myURL = new URL('https://你好.example')
console.log(myURL.hostname) // 输出 'xn--6qq79v.example'

// 解码
// const decoded = new URL('https://xn--6qq79v.example')
// console.log(decoded) // 输出 '你好.example'