WISSENSARTIKEL / PROGRAMMIERUNG & ENTWICKLUNG

Zeichenkodierung in JavaScript

Grundlagen und Anwendung der Zeichenkodierung in der JavaScript-Programmierung

◎ KURZDEFINITION

Zeichenkodierung in JavaScript Zeichenkodierung in JavaScript beschreibt die Art und Weise, wie Zeichenketten in Bytes umgewandelt, gespeichert und interpretiert werden, wobei UTF-16 als interne Kodierung verwendet wird.

Eigenständig verständliche Definition
✦

Das Wichtigste auf einen Blick

  • JavaScript verwendet intern UTF-16 zur Darstellung von Strings.
  • UTF-8 ist die gängigste Zeichenkodierung im Web und wird oft beim Datenaustausch verwendet.
  • Zeichenkodierung beeinflusst die Speichergröße und Verarbeitung von Texten.
  • JavaScript bietet APIs wie TextEncoder und TextDecoder zur Umwandlung zwischen Kodierungen.
  • Das Verständnis von Surrogatpaaren ist wichtig für die korrekte Verarbeitung von Unicode-Zeichen außerhalb des BMP.
  • Fehlerhafte Zeichenkodierung kann zu Darstellungsfehlern und Datenverlust führen.
01

Überblick: Zeichenkodierung in JavaScript

In JavaScript ist die Zeichenkodierung essenziell für die korrekte Verarbeitung und Darstellung von Texten. Da JavaScript intern UTF-16 nutzt, beeinflusst die Kodierung die Art, wie Zeichen gespeichert und manipuliert werden. Zudem spielt die Zeichenkodierung eine wichtige Rolle beim Einlesen und Ausgeben von Daten, insbesondere im Webkontext, wo UTF-8 häufig verwendet wird. Das Verständnis der Zeichenkodierung hilft Entwicklern, Fehler bei der Textverarbeitung zu vermeiden und Anwendungen international nutzbar zu machen.

02

Was ist Zeichenkodierung in JavaScript?

Zeichenkodierung in JavaScript beschreibt das Verfahren, mit dem Zeichen (z.B. Buchstaben, Symbole) in eine Folge von Bytes umgewandelt und wieder zurückgewandelt werden. Intern verwendet JavaScript UTF-16, wodurch jeder String als eine Sequenz von 16-Bit-Codeeinheiten gespeichert wird. Dies ermöglicht die Darstellung eines großen Bereichs von Unicode-Zeichen, erfordert aber besondere Behandlung bei Zeichen außerhalb des Basis-Multilingual-Planes (BMP).

03

UTF-16 als interne Kodierung

JavaScript speichert Strings intern als UTF-16-Codeeinheiten. Das bedeutet, dass jedes Zeichen normalerweise 2 Bytes belegt. Für Zeichen außerhalb des BMP, wie Emojis oder seltene Schriftzeichen, werden sogenannte Surrogatpaare verwendet, die aus zwei 16-Bit-Einheiten bestehen. Dies hat Auswirkungen auf String-Operationen wie Länge, Indexierung und Iteration.

04

UTF-8 und der Webkontext

Obwohl JavaScript intern UTF-16 nutzt, ist UTF-8 die dominierende Zeichenkodierung im Web. Beim Austausch von Daten über HTTP oder beim Lesen und Schreiben von Dateien werden Texte meist in UTF-8 kodiert. JavaScript bietet daher Mechanismen, um zwischen UTF-8 und UTF-16 zu konvertieren, etwa über die Klassen TextEncoder und TextDecoder.

05

Beispiel: Umwandlung zwischen UTF-16 und UTF-8

✦

Mit dem TextEncoder kann ein JavaScript-String in UTF-8 kodiert werden, während TextDecoder die Umkehrung ermöglicht. Dies ist wichtig, wenn Binärdaten verarbeitet oder Netzwerkanfragen mit Textinhalten durchgeführt werden.

06

Vergleich wichtiger Zeichenkodierungen

KodierungSpeicher pro ZeichenUnicode-UnterstützungVerwendung
ASCII1 ByteNur 128 ZeichenLegacy-Systeme, einfache englische Texte
UTF-81-4 BytesVollständigWeb, Datenübertragung
UTF-162 oder 4 BytesVollständigJavaScript interne Darstellung, Windows
07

Surrogatpaare und ihre Bedeutung

Surrogatpaare sind ein Mechanismus in UTF-16, um Zeichen außerhalb des BMP (Unicode-Bereich über U+FFFF) darzustellen. Sie bestehen aus zwei 16-Bit-Codeeinheiten. In JavaScript können Surrogatpaare zu unerwarteten Ergebnissen bei String-Methoden führen, wenn diese nicht darauf ausgelegt sind, sie als ein Zeichen zu behandeln.

08

Praktische Tipps für Entwickler

Beim Umgang mit Zeichenkodierung in JavaScript sollten Entwickler auf die korrekte Handhabung von Surrogatpaaren achten, UTF-8 für den Datenaustausch bevorzugen und die TextEncoder/TextDecoder-APIs nutzen. Außerdem empfiehlt sich die Verwendung von Bibliotheken, die Unicode-konforme String-Operationen unterstützen, um Fehler zu vermeiden.

09

Häufig gestellte Fragen zur Zeichenkodierung in JavaScript

◇

Zusatzinformationen

◇

Begriff: Zeichenkodierung in JavaScript

Interne Kodierung: UTF-16

Häufig genutzte Webkodierung: UTF-8

Wichtige APIs: TextEncoder, TextDecoder

Unicode-Unterstützung: Vollständig, inklusive Surrogatpaare

Typische Probleme: Zeichenverlust, falsche Darstellung, fehlerhafte Stringlängen

Aa

Synonyme und alternative Bezeichnungen

?

Häufige Fragen zu Zeichenkodierung in JavaScript

Warum verwendet JavaScript UTF-16 statt UTF-8 intern?

JavaScript verwendet UTF-16, weil es eine einfache Möglichkeit bietet, die meisten gängigen Zeichen mit 2 Bytes darzustellen und gleichzeitig Unicode-Zeichen außerhalb des BMP durch Surrogatpaare unterstützt. Dies erleichtert die interne String-Verarbeitung.

Wie kann ich in JavaScript einen String in UTF-8 kodieren?

Mit der TextEncoder-API können Sie einen String in ein Uint8Array mit UTF-8-Kodierung umwandeln: const utf8Array = new TextEncoder().encode('Ihr Text');

Was sind Surrogatpaare und warum sind sie wichtig?

Surrogatpaare sind zwei 16-Bit-Codeeinheiten in UTF-16, die zusammen ein einzelnes Unicode-Zeichen außerhalb des BMP darstellen. Sie sind wichtig, weil sie beeinflussen, wie Stringlänge und Indizes in JavaScript interpretiert werden.

Kann die falsche Zeichenkodierung zu Problemen führen?

Ja, falsche oder inkonsistente Zeichenkodierung kann zu fehlerhafter Textdarstellung, Datenverlust oder Programmfehlern führen, insbesondere bei der Verarbeitung internationaler Zeichen.

Welche Zeichenkodierung ist im Web am verbreitetsten?

UTF-8 ist die am weitesten verbreitete Zeichenkodierung im Web, da sie alle Unicode-Zeichen unterstützt und abwärtskompatibel zu ASCII ist.

Wie kann ich in JavaScript UTF-8-kodierte Daten wieder in einen String umwandeln?

Dazu verwenden Sie die TextDecoder-API: const text = new TextDecoder('utf-8').decode(utf8Array);

Beeinflusst die Zeichenkodierung die Stringlänge in JavaScript?

Ja, da JavaScript Strings als UTF-16-Codeeinheiten speichert, kann die Länge eines Strings mehr als die Anzahl der sichtbaren Zeichen betragen, wenn Surrogatpaare enthalten sind.

▤

Quellen & weiterführende Informationen

Quellenvorschläge und Nachweise zum Artikel. Bitte externe Inhalte eigenständig prüfen.

3 Quellen
  1. 01
    MDN Web Docs – String and Character Encoding in JavaScript ↗
    Mozilla· Mozilla Contributors· WebdokumentationKI-Vorschlag · ungeprüft

    Fundierte Dokumentation zu JavaScript-Strings und Kodierungen

    https://developer.mozilla.org/de/docs/Web/JavaScript/Guide/Strings_and_character_encodings
  2. 02
    Unicode Standard ↗
    Unicode Consortium· Unicode Consortium· StandarddokumentKI-Vorschlag · ungeprüft

    Offizieller Standard zur Unicode-Zeichenkodierung

    https://www.unicode.org/standard/standard.html
  3. 03
    ECMAScript Language Specification ↗
    ECMA International· ECMA TC39· StandarddokumentKI-Vorschlag · ungeprüft

    Offizielle Spezifikation von JavaScript, inklusive Stringverarbeitung

    https://tc39.es/ecma262/#sec-strings
War dieser Artikel hilfreich?Dein Feedback hilft, die Wissensplattform zu verbessern.