dedlfix: Javascript-Äuqivalent zu htmlentities (PHP)

Beitrag lesen

echo $begrüßung;

Das Hauptproblem ist aber die Json-Implementierung, sie macht nämlich eine implizite Unicode-zu-Utf8-Konvertierung.
Sowas geht nicht.
Ich weiss zwar nicht genau, was die Json-Implementierung in PHP macht, ich vermute dasselbe wie "JSON.php,v 1.31 2006/06/28 von Michal Migurski", weil sie gleich reagiert. Dafür weiss ich recht gut, was das JSON.php macht und das macht eine implizite Konvertierung. Genau deshalb bricht es bei einem ISO-8859-1 "ü" ab.

Wenn es abbricht, macht es keine Konvertierung, sonst müsste es ja nicht abbrechen. Ein ISO-8859-1-ü ist kein gültiger UTF-8-Code, weswegen es an der Stelle ungewollt reagieren darf.

Auch die von dir erwähnte JSON-Implementation (wenn ich die richtige gefunden habe, eine eindeutige URL gabst du ja nicht an) erwartet UTF-8-kodierte Daten (oder ASCII, was eine kleine Untermenge von UTF-8 ist): if var is a string, note that encode() always expects it to be in ASCII or UTF-8 format! Die Konvertierung, die im Quelltext zu sehen ist, kodiert UTF-8-kodierte Zeichen jenseits von ASCII in eine Javascript-Darstellung \uxxxx (plus einer Sonderbehandlung für einige andere spezielle Zeichen).

Die in PHP enthaltene JSON-Implementierung verhält sich in dem Punkt gleich. Sie erwartet UTF-8 und konvertiert die Nicht-ASCII-UTF-8-Zeichen in die Javascript-Notation \uxxxx. Bei beiden führt also kein Weg dran vorbei, die Zeichen als UTF-8 zu übergeben. Wenn sie dir nicht in der Kodierung vorliegen, musst du sie selbst umkodieren.

echo "$verabschiedung $name";