echo $begrüßung;
nach einer Umstellung auf 5.0.37 sind alle meine Tabellen und Spalten mit Kollation "latin1_swedish_ci" eingestellt. (Warum auch immer?)
Das ist die Default-Einstellung. MySQL kommt aus Schweden.
Ohne explizite Angaben übernehmen die Felder die Kodierung/Kollation der Tabelle, Tabellen übernehmen von Datenbanken, Datenbanken von der Server-Konfiguration.
Wenn ich PhpMyAdmin öffne und damit arbeite wird mir aber als Default immer "utf8" angezeigt.
Das ist etwas, das nur den PMA angeht und muss dich nicht weiter kümmern. Jeder Client kann mit einer ihm genehmen Kodierung mit dem MySQL-Server Daten austauschen. Vorausgesetzt, es ist die Kodierung der Server-Konfiguration, oder sie wurde explizit für die Verbindung ausgehandelt. MySQL nimmt dann gegebenenfalls selbständig Umwandlungen zwischen unterschiedlichen Kodierungen vor. Das muss natürlich technisch möglich sein. Der komplette Unicode-Bereich beispielsweise lässt sich nicht in Latin1 abbilden, wohl aber der umgekehrte Fall.
Ich habe Probleme damit wenn ich eine Tabelle mit PhpMyAdmin änder und es sind Passwörter mit SOnderzeichen drin.
Welcher Art sind die Probleme? Wurden die Datendateien aus einer Version kleiner als 4.1 direkt übernommen? Verwend(et)en Client und Server beim Importieren/Einfügen der Daten die gleiche Kodierung? Können mit dieser Kodierung alle zu verarbeitenden Zeichen dargestellt werden?
Daher wollte ich nun MySQL auch umstellen.
Ich habe in der "my.ini" folgendes eingestellt:set-variable = default-character-set=latin1
set-variable = default-collation=latin1_german2_ci #
Das "set-variable =" kannst du weglassen.
Danach habe ich den MySQL Dienst neu gestartet.
Trotzdem zeigt mir PhpMyAdmin immer noch "UTF8" an.
Wo zeigt er es an? Die für andere Client interessanten Angaben stehen auf der Systemvariablen-Seite. Falls für eine Einstellung zwei Zeilen auftauchen, dann ist es die Zeile "Globaler Wert", alles andere ist nur für die aktuelle Client-Verbindung von Belang.
Was muss man noch ändern?
Wie wäre die beste Vorgehensweise?
Lass den Server auf UTF-8 laufen oder stelle ihn so ein. Verwende für die Felder eine Kodierung, die den zu erwartenden Daten entspricht, bzw. nimm dafür auch UTF-8. Jeder Client sollte nun selbst mit dem Server aushandeln, welche Kodierung er verwenden und haben möchte. Idealerweise nimmt man dafür die MySQL-API-Funktion mysql_set_character_set(), weil dann auch die (MySQL-API-)Funktion mysql_real_escape_string() richtig arbeitet. Unter PHP ist mysql_set_character_set() nur in der mysqli-Extension (und damit PHP5) implementiert. Für die ISO-8859-Familie und dazu kompatible Kodierungen/Zeichensätze und für UTF-8 kann man auch das Statement SET NAMES ... verwenden.
Ich möchte ungern alle MySQL Tabellen umstellen auf "UTF8" weil es ja dann vermutlich Probleme mit dem Login von Usern und deren Passwörtern gibt?
Es gibt keine Probleme, wenn die Daten nicht bereits kaputt sind, wenn alle beteiligten Systeme über die verwendete Kodierung informiert sind und damit umgehen können, und im gesamten Verarbeitungsprozess kein Datenverlust aufgrund von unpassend gewählten Kodierungen auftritt.
echo "$verabschiedung $name";