dedlfix: Zeichensätze

Beitrag lesen

echo $begrüßung;

[Zeichen-Probleme beim Umgang mit MySQL]

Das MySQL-Handbuch gibt im Kapitel Character Set Support detailliert Auskunft, welche Angaben wo gemacht werden können und was sie bewirken. Besonders wichtig ist zum einen die Einstellung der einzelnen Felder, die angibt, welche Zeichen das Feld aufnehmen kann, und zum anderen die Kodierung der aktuellen Verbindung zum Client (PHP in deinem Fall), die festlegt, gemäß welcher Kodierung ankommende Daten interpretiert werden und wie ausgehende Daten kodiert werden (Stichwort: SET NAMES, bzw. passende Funktionen der MySQL-API (z.B. mysql_set_charset()). Im Grunde genommen muss dich als Client nur deine eigene Verbindungskodierungsaushandlung interessieren, denn MySQL kodiert intern zwischen unterschiedlich konfigurierten Kodierungen selbständig um, so dies technisch möglich ist.

In der DB sollen zusätzlich russische Schriftzeichen stehen. Wenn ich
die jetzt unter phpMyAdmin mit Copy&Paste einfüge werden mir dort '?'
angezeigt, was mir logisch erscheint, weil der Schriftsatz nicht stimmt.

MySQL hat vermutlich keine Möglichkeit, die fraglichen Zeichen mit der angegebenen Kodierung des Feldes zu speichern. Wenn dort Latin1 eingestellt ist, dann sind die speicherbaren Daten auf Latin1 beschränkt. Andere Zeichen gehen verloren, bzw. landen als Fragezeichen im Feld. Stell die Feld-Kodierung auf eine passende um (z.B. UTF-8, das passt immer). phpMyAdmin kann ansonsten mit der Kodierproblematik umgehen. Auf der Startseite sollte unter "Zeichensatz / Kollation der MySQL-Verbindung" eine UTF-8-Kodierung angegeben werden. Diese  dort angegebenen Kodierung verwendet es (und handelt es vorher mit dem MySQL-Server aus), um Daten an den MySQL-Server zu schicken. Lesend verwendet es generell UTF-8.

Kann mir jemand die Lösung verraten, wie die russischen Schriftzeichen von ...
xls -> csv -> phpmyadmin -> mysql -> php -> xhtml
heil bleiben ?

Beim Importieren von Dateien über den phpMyAdmin muss die Kodierung der Daten in der Datei im Import-Dialog angegeben werden. Ansonsten musst du dir an jeder Schnittstelle zwischen zwei Systemen klar sein, in welcher Kodierung die Daten ankommen, bzw. welche Kodierung zum Senden verwendet werden soll, und wie der Empfänger über diese Kodierung informiert wird.

echo $verabschiedung $name";