Gunnar Bittersmann: Unterschiedliche Stringlängen PHP/JavaScript nach Definition?

Beitrag lesen

@@Doktor Knallcharge:

nuqneH

PHP verarbeitet keine Zeichen, sondern Bytes. Javascript hingegen verarbeitet Zeichen, keine Bytes.

Njein. JavaScript verarbeitet keine Zeichen, sondern Zwei-Bytes. Das heißt, JavaScript versagt (noch) bei Zeichen jenseits der BMP ab Codepoint U+10000.

Das Unicode-Zeichen 𝄞 U+1D11E MUSICAL SYMBOL G CLEF bspw. wird als Folge der Surrogates U+D834 U+DD1E repräsentiert:

var clef="\uD834\uDD1E";  
console.log(clef.length); // 2

Das ändert sich erst mit ECMAScript 6:

var clef="\u{1D11E}";  
console.log(clef.length); // 1

Qapla'

--
„Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)