Nodejs教程-Node.js Punycode
什么是 Punycode
Punycode 是一种编码语法,用于将 Unicode(UTF-8)字符转换为基本的 ASCII 字符串。由于主机名只能理解 ASCII 字符,因此使用 Punycode。它被用作国际化域名 (IDN 或 IDNA)。让我们通过一个例子来理解:
假设你在浏览器中搜索 mañana.com,你的浏览器(支持 IDNA 的)首先将其转换为 Punycode xn--maana-pta.com,因为字符 ñ 在普通域名中不允许出现。在旧版本中不支持它。
在 Node.js 中使用 Punycode
Punycode.js 已包含在 Node.js v0.6.2 及更高版本中。如果要在其他 Node.js 版本中使用它,请先使用 npm 安装 punycode 模块。你需要使用 require('punycode')
来访问它。
punycode.decode(string)
用于将 Punycode 字符串(由 ASCII 符号组成)转换为 Unicode 符号组成的字符串。
punycode = require('punycode');
console.log(punycode.decode('maana-pta'));
输出:
punycode.encode(string)
用于将 Unicode 符号组成的字符串转换为 Punycode 字符串(由 ASCII 符号组成)。
punycode = require('punycode');
console.log(punycode.encode('☃-⌘'));
输出:
punycode.toASCII(domain)
用于将表示域名的 Unicode 字符串转换为 Punycode。只有域名中的非 ASCII 部分会被转换。
punycode = require('punycode');
console.log(punycode.toASCII('mañana.com'));
输出:
punycode.toUnicode(domain)
用于将表示域名的 Punycode 字符串转换为 Unicode。只有 Punycode 部分会被转换。
punycode = require('punycode');
console.log(punycode.toUnicode('xn--maana-pta.com'));
输出: