echo $begrüßung;
ich gehe folgendermaßen vor, um unsere mysql-datenbank nach von latin1 utf8 zu transformieren:
- kompletter datenbank-dump mittels mysqldump
Gibst du explizit eine zu verwendende Kodierung an? Welche MySQL-Version hat der Server, der die Ausgangsdaten liefert? Welche Default-Kodierung hat der Server.
- zum suchen u. ersetzen lade ich den dump runter, und ersetze alle vorkommen von latin1_german1_ci mit utf8_unicode_ci, latin1 mit utf8
Hoffentlich hast du diese Zeichenketten nicht als Werte in deinen Daten sondern nur in den CREATE-Statements stehen.
- convertiere mittels iconv nach utf-8,
[...]
nicht zum gewünschten ergebnis führt, insofern dass, nach dem reimport in die datenbank
- Euro-Zeichen nicht korrekt umgesetzt werden
Waren sie denn nach dem iconv überhaupt noch intakt? (Die Beantwortung der Frage dürfte sich aber nach dem Weiterlesen erübrigen.)
Das Euro-Zeichen ist in ISO-8859-1 bzw. Latin1 nicht enthalten. Finde zunächst heraus, welche Kodierung du vorliegen hast, falls du nicht den Export mit einer definierten Kodierung vornehmen kannst. Ein Programm, mit dem du dir die Hex-Werte anzeigen lassen kannst sollte dabei helfen (z.B. Ultraedit unter Windows). Siehe: http://de.wikipedia.org/wiki/ISO_8859-1
MySQLs Latin1 ist übrigens Win-1252. Wenn du also MySQL-Latin1 bzw. Win-1252 vorliegen hast, sollte nun klar sein, warum iconv nicht funktioniert hat. Außerdem kannst du es dir sparen, denn MySQL ist nämlich in der Lage, Konvertierungen vorzunehmen. Wenn du also für die Verbindung Kodierung X festgelegt hast und die Felder Kodierung Y verwenden, wandelt MySQL in lesender und schreibender Richtung die Zeichen passend um. Vorausgesetzt, es ist überhaupt technisch möglich. Zeichen, die in der Zielkodierung nicht existieren, gehen verloren.
- was mache ich falsch? - oder bleibt nur eine manuelle ausbesserung?
Meine Empfehlung: Verwende zum Importieren die zum Exportieren verwendete Kodierung und definiere explizit beide Kodierungen bei beiden Vorgängen.
echo "$verabschiedung $name";