Punycode#

穩定性: 0 - 廢棄

原始碼: lib/punycode.js

Node.js 中捆綁的 punycode 模組版本正在被棄用。 在 Node.js 的未來主版本中,該模組將被移除。當前依賴 punycode 模組的使用者應切換到使用使用者區提供的 Punycode.js 模組。對於基於 punycode 的 URL 編碼,請參閱 url.domainToASCII,或更通用的 WHATWG URL API

punycode 模組是 Punycode.js 模組的捆綁版本。可以使用以下方式訪問:

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

Punycode 是 RFC 3492 定義的一種字元編碼方案,主要用於國際化域名(Internationalized Domain Names)。由於 URL 中的主機名僅限於 ASCII 字元,因此包含非 ASCII 字元的域名必須使用 Punycode 方案轉換為 ASCII。例如,翻譯成英文單詞 'example' 的日文字元是 '例'。國際化域名 '例.com'(等同於 'example.com')透過 Punycode 表示為 ASCII 字串 'xn--fsq.com'

punycode 模組提供了 Punycode 標準的簡單實現。

punycode 模組是 Node.js 使用的第三方依賴項,為方便開發者而提供。對該模組的修復或其他修改必須提交到 Punycode.js 專案。

punycode.decode(string)#

punycode.decode() 方法將一個僅包含 ASCII 字元的 Punycode 字串轉換為等效的 Unicode 碼點字串。

punycode.decode('maana-pta'); // 'mañana'
punycode.decode('--dqo34k'); // '☃-⌘' 

punycode.encode(string)#

punycode.encode() 方法將一個 Unicode 碼點字串轉換為僅包含 ASCII 字元的 Punycode 字串。

punycode.encode('mañana'); // 'maana-pta'
punycode.encode('☃-⌘'); // '--dqo34k' 

punycode.toASCII(domain)#

punycode.toASCII() 方法將一個代表國際化域名的 Unicode 字串轉換為 Punycode。只有域名的非 ASCII 部分會被轉換。對一個已經只包含 ASCII 字元的字串呼叫 punycode.toASCII() 將不會產生任何效果。

// encode domain names
punycode.toASCII('mañana.com');  // 'xn--maana-pta.com'
punycode.toASCII('☃-⌘.com');   // 'xn----dqo34k.com'
punycode.toASCII('example.com'); // 'example.com' 

punycode.toUnicode(domain)#

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' 

punycode.ucs2#

punycode.ucs2.decode(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] 

punycode.ucs2.encode(codePoints)#

punycode.ucs2.encode() 方法根據一個數值碼點值陣列返回一個字串。

punycode.ucs2.encode([0x61, 0x62, 0x63]); // 'abc'
punycode.ucs2.encode([0x1D306]); // '\uD834\uDF06' 

punycode.version#

返回一個標識當前 Punycode.js 版本號的字串。