SorgenkindMech: Latin-1 nach UTF8 Konvertierungsprobleme

Beitrag lesen

Huhu,

ich bin gerade dabei alles nach und nach auf utf8_unicode umzustellen.

ich habe mal einen teil der seite und ein teil der datenbank "umgestellt" bin aber noch nicht wirklich zufrieden:

die php-dateien sind nun in unicode gespeichert
der html-charset ist nun UTF-8
die datenbanktabelle habe ich mittels ALTER TABLE tabellenname CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; geändert.

im speziellen habe ich eine art nachrichtensystem aktualisiert, wo es ein betreff und eine nachricht gibt. neue nachrichten werden perfekt dargestellt, alle umlaute und sonderzeichen sind top

bei den alten nachrichten gibt es jedoch nun probleme, im browser werden vierecke dargestellt. wenn ich dem browser sage, dass er die seite nicht in utf8 sondern in latin1 darstellen soll, so wird aus einer neuen (in utf8 korrekt dargestellten) test ä ü ö . ß ? = % $ " bla => test ä ü ö . ß ? = % $ " bla

dafür werden nun aber die alten korrekt angezeigt, trotz konvertierung der datenbank

ich habe mir nun mal den spar gemacht und einen neuen eintrag und einen alten eitrag ausgelesen

die beiden einträge sind:
(neu) test ä ü ö . ß ? = % $ " bla
(alt) Großraumstörung in Beckum

nun habe ich mir den spaß gemacht und die beiden "ß" verglichen
$test1=substr($test1,16,2);
$test2=substr($test2,3,1);
echo "'".dechex(ord($test1))." (".ord($test1).")'-'".dechex(ord($test2))." (".ord($test2).")'";

ausgabe: 'c3 (195)'-'df (223)'

laut http://www.utf8-zeichentabelle.de/unicode-utf8-table.pl?view=2:
U+00DF - ß - c3 9f
ich mein das DF passt ja, resultiert aber in einem viereck
und das C3(Hex) passt ja auch, und wird auch korrekt als ß dargestellt

meinem verständnis nach stehen in der db die Unicode-Zeichenpositionen bei den alten einträgen, und bei den neuen einträgen die Hexadezimale UTF-8-Deklarierung

wenn das richtig ist, wie bekomme ich das korrekt konvertiert?

danke schonmal für eure antworten!