Skip to content

Punycode

非推奨 since: v7.0.0

[安定版: 0 - 非推奨]

安定版: 0 安定性: 0 - 非推奨

ソースコード: lib/punycode.js

**Node.js にバンドルされている punycode モジュールは非推奨となっています。**将来のメジャーバージョンでは、このモジュールは削除されます。現在punycodeモジュールに依存しているユーザーは、ユーザーランド提供のPunycode.jsモジュールに切り替える必要があります。punycode ベースの URL エンコーディングについては、url.domainToASCIIまたは、より一般的にはWHATWG URL APIを参照してください。

punycodeモジュールは、Punycode.jsモジュールのバンドル版です。次のようにアクセスできます。

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

Punycodeは、RFC 3492 で定義されている文字エンコーディングスキームであり、主に国際化ドメイン名で使用することを目的としています。URL のホスト名は ASCII 文字のみに制限されているため、非 ASCII 文字を含むドメイン名は、Punycode スキームを使用して ASCII に変換する必要があります。例えば、「example」と翻訳される日本語の文字は「例」です。国際化ドメイン名「例.com」(「example.com」と同等)は、Punycode では ASCII 文字列「xn--fsq.com」で表されます。

punycodeモジュールは、Punycode 標準のシンプルな実装を提供します。

punycodeモジュールは、Node.js で使用されるサードパーティの依存関係であり、開発者の便宜のために提供されています。モジュールの修正やその他の変更は、Punycode.jsプロジェクトに依頼する必要があります。

punycode.decode(string)

追加されたバージョン: v0.5.1

punycode.decode()メソッドは、ASCII 文字のみのPunycode文字列を、同等の Unicode コードポイントの文字列に変換します。

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

punycode.encode(string)

追加日時: v0.5.1

punycode.encode()メソッドは、Unicode コードポイントの文字列を ASCII 文字のみのPunycode文字列に変換します。

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

punycode.toASCII(domain)

追加日時: v0.6.1

punycode.toASCII()メソッドは、国際化ドメイン名を表す Unicode 文字列をPunycodeに変換します。ドメイン名の非 ASCII 部分のみが変換されます。既に ASCII 文字のみを含む文字列に対してpunycode.toASCII()を呼び出しても、効果はありません。

js
// ドメイン名のエンコード
punycode.toASCII('mañana.com') // 'xn--maana-pta.com'
punycode.toASCII('☃-⌘.com') // 'xn----dqo34k.com'
punycode.toASCII('example.com') // 'example.com'

punycode.toUnicode(domain)

追加日時: v0.6.1

punycode.toUnicode()メソッドは、Punycodeでエンコードされた文字を含むドメイン名を表す文字列を Unicode に変換します。ドメイン名のPunycodeでエンコードされた部分のみが変換されます。

js
// ドメイン名のデコード
punycode.toUnicode('xn--maana-pta.com') // 'mañana.com'
punycode.toUnicode('xn----dqo34k.com') // '☃-⌘.com'
punycode.toUnicode('example.com') // 'example.com'

punycode.ucs2

追加日時: v0.7.0

punycode.ucs2.decode(string)

追加日時: v0.7.0

punycode.ucs2.decode()メソッドは、文字列内の各 Unicode 記号の数値コードポイント値を含む配列を返します。

js
punycode.ucs2.decode('abc') // [0x61, 0x62, 0x63]
// U+1D306(centreの四文字語)のサロゲートペア:
punycode.ucs2.decode('\uD834\uDF06') // [0x1D306]

punycode.ucs2.encode(codePoints)

追加バージョン: v0.7.0

punycode.ucs2.encode()メソッドは、数値コードポイント値の配列に基づいて文字列を返します。

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

punycode.version

追加バージョン: v0.6.1

現在のPunycode.jsバージョン番号を示す文字列を返します。