dedlfix: Problem: Formular -> Sonderzeichen in MySQL abspeichern

Beitrag lesen

echo $begrüßung;

Gut, jetzt sprechen also dein eintragendes Script und dein PMA bei der Ausgabe UTF-8 mit der Datenbank.
Du hast dir aber schon Einträge angeschaut, die du _nach_ der Umstellung deines Scriptes eingefügt hast, oder?
Ja habe ich... immer noch ä war auch schon vorher alles so eingestellt

Dass der phpMyAdmin vorher schon so eingestellt war, glaube ich dir gern. Aber es ging nicht um die Einstellung des PMA sondern um die Einstellung des Scripts, das die Daten dem MySQL-Server übergeben hat. Wenn das vorher bereits seine Verhandlungen mit MySQL mit SET NAMES utf8 eingeleitet hat, dann sehe ich keinen Grund für den Fehler.

Ein Empfänger, der ISO-8859-1 erwartet, sattdessen aber UTF-8-Daten erhält, behandelt die einzelnen Bytes der UTF-8-Zeichen als einzelne Zeichen. Ein UTF-8-kodiertes ä besteht aus ISO-8859-1-Sicht eben aus den Zeichen à und ¤.

Der Grund, dass MySQL trotz der anderslautenden Einstellung der Felder immer noch von ISO-8859-1 bzw. Latin1 ausgeht, ist, dass die Default-Einstellung der Kodierung für Client-Verbindungen in deinem System auf ISO-8859-1/Latin1 steht. Wenn MySQL nun Zeichen über eine Client-Verbindung entgegennimmt, interpretiert es diese gemäß dieser Kodierung, und nimmt beim Eintragen in die Felder gegebenenfalls eine Umwandlung in die dort eingestellte Kodierung vor.

Zur Behebung des Problem ist es am einfachsten, wenn man die betroffenen Tabellen leert, bzw. die fehlerhaften Datensätze löscht, und dann den Importvorgang noch einmal mit Angabe der richtigen Kodierung wiederholt.
Wenn die Daten nicht mehr außerhalb der Datenbank zur Verfügung stehen, und es zu viele sind, sie mit dem PMA händisch zu korrigieren, müsstest du dich nochmal melden, dann überleg ich mir ein passendes Statement zum Korrigieren der Kodierung.

echo "$verabschiedung $name";