[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/String/toWellFormed [Back]  [Original]

String.prototype.toWellFormed() - JavaScript | MDN

Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.

View in English Always switch to English

String.prototype.toWellFormed()

Baseline Weitgehend verfgbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Oktober 2023 browserbergreifend verfgbar.

Die toWellFormed() Methode von String-Werten gibt einen String zurck, bei dem alle einsamen Surrogate dieses Strings durch das Unicode-Ersatzzeichen U+FFFD ersetzt werden.

In diesem Artikel

Syntax

js
toWellFormed()

Parameter

Keine.

Rckgabewert

Ein neuer String, der eine Kopie dieses Strings ist, bei dem alle einsamen Surrogate durch das Unicode-Ersatzzeichen U+FFFD ersetzt sind. Falls str wohlgeformt ist, wird dennoch ein neuer String zurckgegeben (im Wesentlichen eine Kopie von str).

Beschreibung

Strings in JavaScript sind UTF-16-codiert. Die UTF-16-Codierung hat das Konzept von Surrogatpaaren, das im Abschnitt UTF-16-Zeichen, Unicode-Codierungspunkte und Graphemes ausfhrlich beschrieben wird.

toWellFormed() durchluft die Code-Einheiten dieses Strings und ersetzt alle einsamen Surrogate durch das Unicode-Ersatzzeichen U+FFFD . Dies stellt sicher, dass der zurckgegebene String wohlgeformt ist und in Funktionen verwendet werden kann, die wohlgeformte Strings erwarten, wie z.B. encodeURI. Im Vergleich zu einer benutzerdefinierten Implementierung ist toWellFormed() effizienter, da Engine direkten Zugriff auf die interne Darstellung von Strings haben.

Wenn fehlerhaft geformte Strings in bestimmten Kontexten verwendet werden, wie z.B. bei TextEncoder, 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()

js
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"
// "abc"
// "ab"
// "cab"
// "abc"
// "abc"

Fehlervermeidung in encodeURI()

encodeURI wirft einen Fehler, wenn der bergebene String nicht wohlgeformt ist. Dies kann vermieden werden, indem toWellFormed() verwendet wird, um den String zuerst in einen wohlgeformten String zu konvertieren.

js
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

Spezifikation
ECMAScript 2027 LanguageSpecification
# sec-string.prototype.towellformed

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page