Skip to content

Punycode

Veraltet seit: v7.0.0

[Stabil: 0 - Veraltet]

Stabil: 0 Stabilität: 0 - Veraltet

Quellcode: lib/punycode.js

Die im Node.js-Paket enthaltene Version des Moduls punycode wird als veraltet markiert. In einer zukünftigen Hauptversion von Node.js wird dieses Modul entfernt. Benutzer, die derzeit vom Modul punycode abhängig sind, sollten stattdessen zum von Benutzern bereitgestellten Modul Punycode.js wechseln. Für die Punycode-basierte URL-Kodierung siehe url.domainToASCII oder allgemeiner die WHATWG URL API.

Das Modul punycode ist eine gebündelte Version des Moduls Punycode.js. Der Zugriff erfolgt über:

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

Punycode ist ein Zeichenkodierungsschema, das durch RFC 3492 definiert ist und hauptsächlich für die Verwendung in internationalisierten Domainnamen vorgesehen ist. Da Hostnamen in URLs auf ASCII-Zeichen beschränkt sind, müssen Domainnamen, die Nicht-ASCII-Zeichen enthalten, mit dem Punycode-Schema in ASCII konvertiert werden. Beispielsweise ist das japanische Zeichen, das sich ins Englische mit dem Wort 'example' übersetzt, '例'. Der internationalisierte Domainname '例.com' (entspricht 'example.com') wird durch Punycode als ASCII-Zeichenkette 'xn--fsq.com' dargestellt.

Das Modul punycode bietet eine einfache Implementierung des Punycode-Standards.

Das Modul punycode ist eine Drittanbieter-Abhängigkeit, die von Node.js verwendet und Entwicklern als Komfortfunktion zur Verfügung gestellt wird. Fehlerbehebungen oder andere Änderungen am Modul müssen an das Projekt Punycode.js gerichtet werden.

punycode.decode(string)

Hinzugefügt in: v0.5.1

Die Methode punycode.decode() konvertiert eine Punycode-Zeichenkette, die nur ASCII-Zeichen enthält, in die äquivalente Zeichenkette von Unicode-Codepunkten.

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

punycode.encode(string)

Hinzugefügt in: v0.5.1

Die Methode punycode.encode() konvertiert einen String von Unicode-Codepunkten in einen Punycode-String mit Nur-ASCII-Zeichen.

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

punycode.toASCII(domain)

Hinzugefügt in: v0.6.1

Die Methode punycode.toASCII() konvertiert einen Unicode-String, der einen Internationalisierten Domainnamen darstellt, in Punycode. Nur die Nicht-ASCII-Teile des Domainnamens werden konvertiert. Der Aufruf von punycode.toASCII() auf einem String, der bereits nur ASCII-Zeichen enthält, hat keine Auswirkung.

js
// Domainnamen kodieren
punycode.toASCII('mañana.com');  // 'xn--maana-pta.com'
punycode.toASCII('☃-⌘.com');   // 'xn----dqo34k.com'
punycode.toASCII('example.com'); // 'example.com'

punycode.toUnicode(domain)

Hinzugefügt in: v0.6.1

Die Methode punycode.toUnicode() konvertiert einen String, der einen Domainnamen mit Punycode-kodierten Zeichen enthält, in Unicode. Nur die Punycode-kodierten Teile des Domainnamens werden konvertiert.

js
// Domainnamen dekodieren
punycode.toUnicode('xn--maana-pta.com'); // 'mañana.com'
punycode.toUnicode('xn----dqo34k.com');  // '☃-⌘.com'
punycode.toUnicode('example.com');       // 'example.com'

punycode.ucs2

Hinzugefügt in: v0.7.0

punycode.ucs2.decode(string)

Hinzugefügt in: v0.7.0

Die Methode punycode.ucs2.decode() gibt ein Array zurück, das die numerischen Codepunktwerte jedes Unicode-Symbols im String enthält.

js
punycode.ucs2.decode('abc'); // [0x61, 0x62, 0x63]
// Surrogatpaar für U+1D306 Tetragramm für Zentrum:
punycode.ucs2.decode('\uD834\uDF06'); // [0x1D306]

punycode.ucs2.encode(codePoints)

Hinzugefügt in: v0.7.0

Die Methode punycode.ucs2.encode() gibt einen String basierend auf einem Array numerischer Codepunktwerte zurück.

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

punycode.version

Hinzugefügt in: v0.6.1

Gibt eine Zeichenkette zurück, die die aktuelle Versionsnummer von Punycode.js identifiziert.