Sonderzeichen aus Datenbank ersetzen klappt nicht (Zeichensatz-Problem?)

SilentWarrior

Erfahrenes Mitglied
Schönen guten Abend allerseits

Ich versuche derzeit, ein phpBB-Forum auf mehr oder weniger valides HTML umzustellen. Dazu gehört auch, dass es Sonderzeichen wie ’, »/«, – und … mit den korrekten HTML-Pendants darstellt, also bspw. für … … (oder natürlich die Unicode-Variante). Das versuche ich durch drei ganz simple Code-Zeilen, die im Normalfall auch wunderbar funktionieren:
PHP:
$unknown_entities = array('«', '»', '…', '–', '’');
$known_entities = array('«', '»', '…', '–', '’');
	
echo str_replace($unknown_entities, $known_entities, $string);
(In der zweiten Zeile bitte die amp; einfach ignorieren – wenn ich die weglasse, wandelt das Board die Codes leider gleich in die entsprechenden Zeichen um. :()

Nun, diese drei Zeilen wollen leider beim Auslesen aus der Datenbank einfach nicht klappen. Die Datei, in der sich das Script befindet, hat natürlich UTF-8-Codierung (sonst könnten die Sonderzeichen in »Reinform« gar nicht gespeichert werden), die Datenbank hat ISO-8859-1. Aber auch, wenn ich die DB-Codierung auf UTF-8 ändere, passiert nicht viel.

Kann mir jemand sagen, wo das Problem liegt und was man da machen kann? Ich hab schon alle möglichen Varianten ausprobiert, u. a. auch die, nach Umstellen der DB-Codierung die korrupten Sonderzeichen (diese kleinen Kästchen, die ungültige Zeichen darstellen) in die PHP-Datei zu kopieren – das hat leider auch nichts genützt.

Bin für Ratschläge dankbar!

SilentWarrior
 
Zurück