dedlfix: Umlaute werden vom PHP-Script "geschrottet"

Beitrag lesen

echo $begrüßung;

Die Byte-Werte dieser Zeichen kommen in den Kodierungen ISO-8859-xx und UTF-8 nur einmal vor. Deshalb kann es da keine Missverständnisse geben. Aber einige im asiatischen Raum gebräuchliche Kodierungen verwenden diese Byte-Werte ein zweites Mal. Da ist es wichtig, den charset-Parameter richtig anzugeben.

Da es hier ja nur um die Zeichen &"'<> geht, muss ich mich vermutlich revidieren. Bei meiner jetzigen Nachrecherche fand ich nur Shift_JIS und GBK (bzw. 936), das Werte im Bereich x40-x7F doppelt belegt. Alle anderen Kodierungen nutzten nur den Bereich ab x80 aufwärts.
Neulich beschäftigte ich mich mit dem Unterschied zwischen mysql_escape_string und mysql_real_escape_string - letzteres interessiert sich für das charset der Verbindung, ersteres nicht - und den Fehlern, die bei Verwendung von mysql_escape_string auftreten können, und hatte mir nur gemerkt, dass ein Unterschied bei ISO-8859 und UTF-8 nicht vorhanden ist. Bei Shift_JIS und GBK bekommt man Probleme mit dem \ (x5C), da der innerhalb der x40-x7F liegt

Was für Kodierungen?
UTF-8 kannst du wohl nicht meinen, denn da herrscht ja "Eindeutigkeit".

Nein, das schloss ich ja bereits aus.

Wenn ich also weiss, dass ich nur UTF-8 verarbeite, und keine "Kodierung made in China", könnte ich mir die charset-Angabe da also wieder sparen, oder?

Sie ist bei htmlspecialchars() (nach meinem jetzigen Kenntnisstand) verzichtbar. Bei htmlentities() dagegen nicht, aber das will man ja zugunsten von UTF-8 gar nicht einsetzen.

echo "$verabschiedung $name";