Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
String.prototype.toWellFormed()
Baseline 2023Newly available
Since October 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
DietoWellFormed() Methode vonString-Werten gibt einen String zurück, bei dem alleeinsamen Surrogate dieses Strings durch das Unicode-Ersatzzeichen U+FFFD ersetzt werden.
In diesem Artikel
Syntax
toWellFormed()Parameter
Keine.
Rückgabewert
Ein neuer String, der eine Kopie dieses Strings ist, bei dem alle einsamen Surrogate durch das Unicode-Ersatzzeichen U+FFFD ersetzt sind. Fallsstrwohlgeformt ist, wird dennoch ein neuer String zurückgegeben (im Wesentlichen eine Kopie vonstr).
Beschreibung
Strings in JavaScript sind UTF-16-codiert. Die UTF-16-Codierung hat das Konzept vonSurrogatpaaren, das im AbschnittUTF-16-Zeichen, Unicode-Codierungspunkte und Graphemes ausführlich beschrieben wird.
toWellFormed() durchläuft die Code-Einheiten dieses Strings und ersetzt alle einsamen Surrogate durch dasUnicode-Ersatzzeichen U+FFFD�. Dies stellt sicher, dass der zurückgegebene String wohlgeformt ist und in Funktionen verwendet werden kann, die wohlgeformte Strings erwarten, wie z.B.encodeURI. Im Vergleich zu einer benutzerdefinierten Implementierung isttoWellFormed() effizienter, da Engine direkten Zugriff auf die interne Darstellung von Strings haben.
Wenn fehlerhaft geformte Strings in bestimmten Kontexten verwendet werden, wie z.B. beiTextEncoder, werden sie automatisch mithilfe des gleichen Ersatzzeichens in wohlgeformte Strings konvertiert. Wenn einsame Surrogate gerendert werden, erscheinen sie auch als Ersatzzeichen (ein Rhombus mit einem Fragezeichen darin).
Beispiele
>Verwendung von toWellFormed()
const strings = [ // Lone leading surrogate "ab\uD800", "ab\uD800c", // Lone trailing surrogate "\uDFFFab", "c\uDFFFab", // Well-formed "abc", "ab\uD83D\uDE04c",];for (const str of strings) { console.log(str.toWellFormed());}// Logs:// "ab�"// "ab�c"// "�ab"// "c�ab"// "abc"// "ab😄c"Fehlervermeidung in encodeURI()
encodeURI wirft einen Fehler, wenn der übergebene String nicht wohlgeformt ist. Dies kann vermieden werden, indemtoWellFormed() verwendet wird, um den String zuerst in einen wohlgeformten String zu konvertieren.
const illFormed = "https://example.com/search?q=\uD800";try { encodeURI(illFormed);} catch (e) { console.log(e); // URIError: URI malformed}console.log(encodeURI(illFormed.toWellFormed())); // "https://example.com/search?q=%EF%BF%BD"Spezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-string.prototype.towellformed> |