什么是 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'));

输出:

1.png

punycode.encode(string)

用于将 Unicode 符号组成的字符串转换为 Punycode 字符串(由 ASCII 符号组成)。

punycode = require('punycode'); 
console.log(punycode.encode('☃-⌘'));

输出:

2.png

punycode.toASCII(domain)

用于将表示域名的 Unicode 字符串转换为 Punycode。只有域名中的非 ASCII 部分会被转换。

punycode = require('punycode'); 
console.log(punycode.toASCII('mañana.com'));

输出:

3.png

punycode.toUnicode(domain)

用于将表示域名的 Punycode 字符串转换为 Unicode。只有 Punycode 部分会被转换。

punycode = require('punycode'); 
console.log(punycode.toUnicode('xn--maana-pta.com'));

输出:

4.png

标签: Nodejs, Nodejs安装教程, Nodejs教程, node, nodejs入门, nodejs入门教程, nodejs进阶, nodejs学习教程, nodejs开发, nodejs指南, nodejs学习指南, nodejs环境配置, nodejs框架