echo $begrüßung;
Die Inhalte werden in der Datenbank richtig angezeigt,
Diese Aussage ist zu allgemein. In der Datenbank werden Inhalte wie in einer Balck-Box abgelegt. Du siehst als Außenstehender nicht, wie das geschieht. Um dir den Inhalt anzusehen muss er abgefragt werden, und dabei gibt es etwas zu beachten (siehe unten). Womit hast du dir also die Inhalte ausgeben lassen? Wenn es der phpMyAdmin in einer halbwegs aktuellen Version war, dann wäre deine Aussage wenigstens richtig, denn der hat seine Hausaufgaben bezüglich des unten Stehenden gemacht.
Also ich benutze phpMyAdmin 2.9.1.1-Debian-3. Die MYSQL-Datenbank läuft mit Zeichencode utf-8. Alle Spalten, die ich dort angelegt habe, laufen ebenfalls über utf-8. Die einzige Spalte die eine andere Zeichencodierung hat, ist die Spalte mit russischem Content. Dieser wird, wie nicht anders vermutet, natürlich im russischen Zeichenformat geschrieben. Dafür habe ich bemerkt, brauche ich den kio8-r Zeichensatz, sonst kommt in PhpMyAdmin nur noch Fragezeichen an. Diese Spalte habe ich umgestellt und damit wird es in PMA ordentlich angezeigt.
beim Auslesen im PHP kommen aber bei der russischen Spalte nur Fragezeichen, also verwendet er den falschen Zeichensatz!
Wer ist in dem Fall er? Der Server, der Client oder gar der Browser? Vermutlich hab ihr euch nur nicht auf eine geeignete Kodierung geeinigt.
Ich beziehe mich auf die Ausgabe der Zelle, die ich in PMA mit koi8-r Zeichensatz versehen habe. Lese ich also den Wert mit PHP über MYSQL_REQUEST aus, und zeige diesen auf der Seite an, stehen dort statt der richtigen Zeichen Fragezeichen.
Meine Frage wäre nun, wie kann ich dem SELECT-Befehl sagen, dass er die Daten im koi8-r Format auslesen muss?!
In welcher Kodierung du das Abfrageergebnis erhältst wird im Konfigurationswert character_set_results festgelegt. Welche Kodierung die Felder haben, ist dabei nicht entscheidend, denn MySQL nimmt beim Ausliefern gegebenenfalls Umkodierungen vor. Natürlich muss die Zielkodierung alle verwendeten Zeichen darstellen können, sonst gibt es Datenverlust. Weitere Voraussetzung ist, dass die Daten in den Feldern auch der Kodierung entspricht, die für die Felder angegeben wurde. Dies kann man sicherstellen, indem man die Daten in der Kodierung an das MySQL-System gesendet hat, die in character_set_client und character_set_connection angegeben wurden. Wenn für die Felder eine andere Kodierung angegeben wurde, nimmt MySQL hier auch wieder Umkodierungen vor. In Richtung MySQL sind auch noch character set introducer interessant, auf die ich aber nicht weiter eingehen werden. Wenn man durchgehend UTF-8 nimmt kann man sich diese nämlich sparen.
Alle drei genannten character_set_*-Werte werden in einem Rutsch mit der Anweisung SET NAMES ... für die aktuelle Verbindung eingestellt. Siehe dazu das Kapitel Connection Character Sets and Collations und meinen Versuchsaufbau von gestern, bei dem es aber um ein etwas anderes Problem ging. Die Lektüre der anderen Teile des Kapitels Character Set Support kann auch nicht schaden.
WOW, das klingt gut, könntest Du/Sie/... mir bitte einen Code-snipsel posten, wie ich das in den MYSQL_REQUEST übernehme. Das Problem ist, dass ich ja sowohl utf-8, wie auch koi8-r ausgeben möchte. Also für Deutsch(und was sonst noch für Sprachen sind) utf-8 und für Russisch dann das ganze in koi8-r.
echo "$verabschiedung $name";
danke §name = michael