echo $begrüßung;
MySQL's latin1 is the same as the Windows cp1252 character set. This means it is the same as the official ISO 8859-1 ...
Das stimmt nicht ganz. Es gibt da ein paar unwesentliche Unterschiede. (Na gut, das €-Zeichen ist auch hierzulande wichtig.)
Wenn ich das richtig verstehe, ist latin1 einfach nur der MySQL-Name für ISO-8859-1, wobei die Daten dann trotzdem weitergehend in utf8 codiert werden?
Der zweite Teil stimmt, der dritte stimmt nicht wirklich. UTF-8 ist nur im Bereich der Byte-Werte 00-7F kompatibel zu den ISO-8859-x-Kodierungen. Dieser Bereich entspricht dem ASCII. Deswegen ist er in beiden Kodierungen enthalten.
Wie auch immer: Mit
$backup = "mysqldump --opt --default-character-set=utf8 -c -full -h $dbhost -u $dbusr -p$dbpass $datab $table > table.sql";
krieg ich die Daten wieder vernünftig raus und
Wolltest du nicht ISO-8859-1/latin1 haben?
Anzeigenmüll hab ich (noch) nicht.
Anzeigemüll entsteht immer dann, wenn das anzeigende Programm nicht die richtige Kodierung gesagt bekommt. Das passiert eigentlich nur dann, wenn man die Daten falsch deklariert oder das anzeigende Programm mit einer bestimmten Kodierung nicht klarkommt.
P.s.: Warum eigentlich kein Anzeigemüll, obwohl in jedem Html-Head (nur)
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
steht ?
Hier verstehe ich den Zusammenhang nicht.
Diese Meta-Angabe ist nur eine Ersatz-Angabe, falls der gleichnamige HTTP-Header keine Angabe zur Zeichenkodierung macht. HTTP-Header lassen sich übrigens mit der livehttpheaders-Extension des Firefox anzeigen. Ähnliche Erweiterungen gibt es auch für andere Browser.
echo "$verabschiedung $name";