Lösung:
Die Funktion htmlspecialchars wandelt nur spezielle Zeichen um:
& (ampersand), " (double quote), ' (single quote), (less than), (greater than)
Die Funktion htmlspecialchars hat verschiedene optionale Parameter:
string htmlspecialchars( string $string[, int $flags = ENT_COMPAT | ENT_HTML401[, string $encoding = ini_get('default_charset')[, bool $double_encode = true]]] )
Wenn man keine Optionen angibt, dann verwendet PHP ab Version 5.4 als Standardwert für $encoding UTF-8. Und ab Version 5.6 verwendet den Wert von default_charset für $encoding. Wenn man htmlspecialchars ohne Optionen verwendet und den latin1-Zeichensatz hat, dann muss man setzen:
ini_set('default_charset','ISO-8859-1');
ansonsten hat man die Situation:
$string = htmlspecialchars ($string_in_latin1,ENT_COMPAT | ENT_HTML401,'UTF-8');
Obwohl nur spezielle Zeichen verändert werden sollen, funktioniert die Funktion nicht mehr richtig (oder gar nicht). |