JavaScript BinaryString, String und Zeichenkette

Wie JavaScript intern zwischen String und BinaryString unterscheidet

JavaScript unterscheidet, ähnlich wie Perl, intern zwischen Zeichenketten und Bytesequenzen. Tabelle und Code untenstehend verdeutlichen diesen Sachverhalt. Ausgehend von den Zeichen 'äöü' die hierzu UTF-8 kodiert vorliegen, werden diese einmal als Zeichenkette (String) und zum Anderen als Bytesequenz (BinaryString) innerhalb JavaScript aufgefasst.

So liefert die JavaScript-Funktion charCodeAt() im ersten Fall den Codepoint für das jeweilige Zeichen, im zweiten Fall jedoch die Bytewertigkeit der jeweiligen Oktette (Byte).

äöü als String und als BinaryString
Copepoints in Zeichenkette
Bytewertigkeiten in BinaryString

Gut zu sehen also, daß der Index über einen BinaryString eben über die Bytes läuft, in einer Zeichenkette hingegen läuft der Index über die Zeichen.

Das dazugehörige JavaScript





Anmerkung: Die Funktion charCodeAt() liefert die Wertigkeiten beliebiger Bytes. Die Umkehrfunktion dazu ist String.fromCharCode(oktettenwertigkeit) womit genau ein Byte erzeugt wird.

Die hier vorgestellete Funktion zstr2bstr(str) geht auf eine Empfehlung von MDN zurück, Link siehe obenstehend und fuinktioniert nur mit UTF-kodierten Zeichenketten was dem Einsatz von encodeURIComponent(str) geschuldet ist und natürlich ist das mehr als ein Kompromiss.

Wenn die Datenquelle jedoch ein Blob ist, wird zweckmäßigerweise FileReader.readAsBinaryString() verwendet. Und schließloch lässt sich ein Binary String auch aus einem ArrayBuffer heraus erzeugen.


Die rein persönlichen Zwecken dienende Seite verwendet funktionsbedingt einen Session-Cookie. Datenschutzerklärung: Auf den für diese Domäne installierten Seiten werden grundsätzlich keine personenbezogenen Daten erhoben. Das Loggen der Zugriffe mit Ihrer Remote Adresse erfolgt beim Provider soweit das technisch erforderlich ist. @: Rolf Rost, Am Stadtgaben 27, 55276 Oppenheim, nmq​rstx-18­@yahoo.de