echo $begrüßung;
Verstehe ich dich richtig, dass ich also jede einzelne Tabelle und hier wiederum jede einzelne Spalte von Hand ändern muss.
Etwa mit;
ALTER TABLEtabellen\_name
CHANGESpalte1
Spalte2
CHARACTER SET utf8 COLLATE utf8_general_ci ; ?
Man muss nur genau lesen. Da ich das lange nicht gemacht habe und meine damals nicht sehr vielen Tabellen zu Fuß umgestellt hatte, war mir die Alles-auf-einmal-Lösung nicht geläufig. Das Statement aus deinem OP konvertiert aber laut Handbuch auch die Spalteninhalte. Mach es einfach mal mit einer Kopie und wenn es nicht geklappt hat, kannst du sie wieder löschen. Hauptsache, du schaust vorher und nachher mit dem phpMyAdmin ob er alles richtig anzeigt. (Vom PMA weiß ich, dass er alles richtig macht.)
» Den solltest du unabhängig von der gewählten Vorgehensweise machen. Beim Dumpen und beim Einlesen musst du auf die Angabe der korrekten Kodierung achten. Der phpMyAdmin dumpt immer in UTF-8, wenn du nichts angibst oder nichts angeben kannst (wenn iconv oder recode nicht installiert ist).
Angenommen ich exportiere die gesamte DB mit PhpMyAdmin. Wenn ich dann die SQL Datei mit "iconv" (das gibt es glaube ich auch für Windows) in UTF8 umwandle und alle Zeilen wo "DEFAULT CHARSET=latin1" ersetze durch UTF-8.
Und dann mit PhpMyAdmin (eingestellt auf UTF-8) wieder zurückspiele, müsste es doch eigentlich auch funktionieren oder?
Schau nach, ob dein PMA dir beim Dumpen die Auswahl einer Kodierung erlaubt. Wenn nicht, dumpe einfach so, öffne die Datei im Browser und stell die Kodierung auf UTF-8. Alles richtig? - Bestens. Beim Import dann auf UTF-8 achten, denn da ist auf jeden Fall eine Kodierungsauswahlmöglichkeit vorhanden.
Ja das mit dem SET Names habe ich auch gelesen. Hatte ich bisher nicht gemacht. Ich arbeite mit PDO. Dann müsste ich das entsprechende PDO Statement gleich nach der Connection für UTF-8 angeben?
PDO hat kein Equivalent zu mysql(i)_set_charset(), da brauchst du nach jedem Connect (PDO-Objekt-Erstellen) einmal SET NAMES.
Wenn ich dann zusätzlich noch folgende Änderungen vornehme:
Im Apache die httpd.conf auf;
ddDefaultCharset utf-8In der PHP.ini
[PHP]
default_charset = “utf-8″
Diese PHP-Einstellung übernimmt das Senden der charset-Angabe im HTTP-Header. Das gleiche macht die Apache-Direktive. Du brauchst nur eins davon.
[mbstring]
Die MB-String-Extension benötigst du nur, wenn du mit PHP UTF-8-Strings bearbeiten willst. Reichst du die Daten einfach nur durch, brauchst du dich um MB-Strings nicht zu kümmern.
und in der MySQL my.cnf Datei;
init_connect = ‘SET collation_connection = utf8_general_ci’
init_connect = ‘SET NAMES utf8′
Der erste Eintrag ist überflüssig, SET NAMES erledigt den mit. Wenn du hier schon SET NAMES setzt, brauchst du es im PDO nicht. (Lass aber die ‘′ weg!)
[mysqldump]
default-character-set = utf8
[mysqlimport]
default-character-set = utf8
[mysql]
default-character-set = utf8
Das sind Einstellungen für die Kommandozeilentools. Wenn du diese Tools verwendest, kannst du das so nehmen.
angebe, dann müsste ich doch eigentlich auf der sicheren Seite sein.
Viel hilft viel? "Viel" bedeutet auch viel Pflegeaufwand. Beschränke dich auf jeweils eine Konfiguration und schau zu jeder Änderung nach, ob sie was gebracht hat. Setzt natürlich voraus, dass man weiß, was sie bewirkt. Eigentlich steht das ja in der jeweiligen Dokumentation, aber deine Liebe dazu kenne ich ja ;-)
echo "$verabschiedung $name";