dedlfix: MySQL > 4.1 utf ISO etc - Nochmal für die Dummen bitte

Beitrag lesen

echo $begrüßung;

Eigentlich ist mir auch völlig Wumpe, wie MySQL die Daten speichert,
hauptsache ich krieg sie ohne Tilde-A wieder raus.

MySQL speichert die Daten so, wie es in den Feld-Einstellungen festgelegt ist. Das muss dich theoretisch nur als Ersteller der Tabelle interessieren, denn davon hängt ab, welche Zeichen gespeichert werden können.
Als Anwender, der mit der DB nur CRUD[*] reden möchte, möchtest du deine Daten in einer bestimmten Kodierung senden und das Ergebnis ebenfalls in einer bestimmten Kodierung haben. Wenn dein Wunsch von den Server-Default-Einstellungen abweicht, solltest du dem DBMS mitteilen, welche Kodierung du verwendest. Das geht für beide Richtungen mit SET NAMES kodierung. Das Umwandeln in die und aus der Kodierung der einzelnen Felder übernimmt MySQL automatisch. Mit dieser Thematik beschäftigt sich das Handbuch-Kapitel Connection Character Sets and Collations.

Im Browser gab's noch nie Probleme, aber mit
$backup = "mysqldump --opt -c  -full -h $dbhost  -u $dbusr -p$dbpass $datab $table >  table.sql";
gibt's nur Müll.

Ohne Angabe von --default-character-set=charset_name ist die Ausgabe von mysqldump UTF-8-kodiert. Dieser Wert kann auch bereits in irgendeiner der Konfigurationsdateien eingestellt sein.

Als konkrete Fragen hätte ich:

  1. Wie krieg ich mit PHP-MyAdmin wieder 'normale' 8859-1 Tabellen erstellt ?

Gute Frage, nächste Frage. Es ist mir noch nicht gelungen, herauszufinden, ob und wo man das konfigurieren kann, welche Kodierung beim Erzeugen der Export-Datei verwendet werden soll. Es gibt dafür keine auswählbare Option. Die Ausgabe ist immer UTF-8-kodiert. Beim Importieren kann man allerdings angeben, in welcher Kodierung die Eingabedatei vorliegt. Und dies sollte man auch tunlichst wahrheitsgemäß tun.

Du bist sicherlich nicht der erste, der dieses Export-Problem hat. Solltest du bei deinen Recherchen auf einen brauchbaren Hinweis stoßen, so lass es mich/uns bitte wissen.

1b. Wie krieg ich die vorhandenen Tabellen in 8859-1 konvertiert?

Beispielsweise mit einem Texteditor, in dem man die Datei als UTF-8 öffnet und als ISO-8859-1 (Ultraedit nennt das einfach ASCII) speichert.

2: Wie muss ich Daten speichern, damit ich sie vernünftig wieder raus kriege ?
( Einfach im Format Unicode UTF-8 ? Oder muss ich vorher noch wilde %C3%BC Umwandlungen o.ä. durchführen ? )

Keineswegs. Du musst dem Server nur deine Wünsche mitteilen (siehe oben, das SET-NAMES-Ding).

  1. Wo passiert die Umwandlung überhaupt ?

Siehe oben.

Zerschiesst PHPMyAdmin die beim Hochladen oder ist das grundsätzlich beim Einlesen in MySQL ?

Beim Importieren muss man die richtige Zeichenkodierung angeben, ansonsten macht phpMyAdmin eigentlich alles richtig.[**] Wenn du innherhalb von phpMyAdmin irgendwelchen Mist siehst, ist dieser erfahrungsgemäß nicht auf dem von phpMyAdmin gewachsen.

echo "$verabschiedung $name";

[*] CRUD = Create, Read, Update, Delete oder in SQL: INSERT, SELECT, UPDATE, DELETE
[**] Die Export-Geschichte ist kein Fehler, nur ein nicht vorhandenen Feature (bzw. eine noch nicht gefundene Konfigurationsmöglichkeit desselben).