str_replace funktioniert nicht - Codierung falsch?!

String

Erfahrenes Mitglied
Hallo zusammen,

ich lade einen Text aus der Datenbank.

Versuche ich dann ein z.B. ä zu ersetzen, funktioniert ein einfaches str_replace("ä", "ae"); nicht.
Nehme ich stattdessen str_replace("\xE4", "ae"); klappt es.

Die gesamte Seite ist im UTF-8 Format.
Die Einträge in der MySQL sind allerdings latin_swedisch (... woher auch immer..).

Ändere ich die Kollidierung in der Datenbank nun auf UTF_8_General ändert das leider nichts.


Hat da jemand ein Kniff, was ich da ändern / machen sollte?
Das eigenartige ist: Ändere ich die Codierung der Webseite in ein ISO-Format werden die Sonderzeichen nicht mehr korrekt angezeigt.
Ich erhalte dann nur noch Fragezeichen oder sonst ein Kauderwelsch :(

Hoffe mir kann jemand helfen .. :)

Beste Grüße
paD
 
Hast du den Zugriff auf die Datenbank auch UTF-8 encodiert?

PHP:
mysql_query("SET NAMES 'utf8'");

Im übrigen dürfte es nicht ausreichen, einfach das Spalten- oder Tabellen-Encoding zu ändern. Da gehört auch eine Konvertierung dazu: http://nicj.net/mysql-converting-an-incorrect-latin1-column-to-utf8/

Du könntest es allerdings auch so lösen:

1. Mache einen kompletten Dump
2. Ändere das SQL-File, was beim Dump entstanden ist so ab, das ein Import unicode statt latin1 ist. Dazu im Editor mit Suchen+Ersetzen arbeiten (vorher evtl. Datei noch mal backupen). Ändere im Editor (Notepad++ kann das bspw.) das Encoding des SQL-Files.
3. Lösche/leere die komplette Datenbank.
4. Re-Importiere das SQL-File.

Dann sollten deine Daten in unicode sein.

Allerdings musst du trotzdem deine Client->Server-Verbindung mittels des og. Query in Unicode setzen.
 
Yipiee... > 50.000 Einträge Live Updaten.. das macht Spaß.
Hatte es leider befürchtet.

Danke für die Hilfe!

paD
 
Zurück