Читать книгу JavaScript – Das Handbuch für die Praxis - David Flanagan - Страница 40

Zeichen, Codepoints und JavaScript-Strings

Оглавление

JavaScript verwendet die UTF-16-Codierung des Unicode-Zeichensatzes: Zeichenketten sind Sequenzen von vorzeichenlosen 16-Bit-Werten. Die am häufigsten verwendeten Unicode-Zeichen (die der als Basic Multilingual Plane bezeichneten Ebene) haben Codepoints, die in 16 Bit passen und durch ein Element eines Strings dargestellt werden können. Unicode-Zeichen, deren Codepoints nicht in 16 Bit passen, werden nach den Regeln von UTF-16 als Sequenz (als Ersatzzeichenpaare bzw. Surrogate Pairs bezeichnet) zweier 16-Bit-Werte codiert. Es kann also sein, dass ein JavaScript-String der Länge 2 (zwei 16-Bit-Werte) nur ein einziges Unicode-Zeichen darstellt:

let euro = "€";

let love = "";

euro.length // => 1: Dieses Zeichen hat ein 16-Bit-Element.

love.length // => 2: Die UTF-16-Codierung von ist "\ud83d\udc99".

Die meisten von JavaScript definierten Methoden zur String-Manipulation arbeiten auf 16-Bit-Werten, nicht auf Zeichen. Sie behandeln Ersatzzeichenpaare nicht unterschiedlich, führen keine Normalisierung des Strings durch und sorgen nicht einmal dafür, dass eine Zeichenkette wohlgeformtes UTF-16 ist.

In ES6 sind Zeichenketten übrigens iterierbar, und wenn Sie eine for/of-Schleife oder den …-Operator auf einem String verwenden, wird über die tatsächlichen Zeichen des Strings iteriert, nicht über die 16-Bit-Werte.

JavaScript  –  Das Handbuch für die Praxis

Подняться наверх