Hi!
Jetzt habe ich aber ein System, dass
- mal auf einer MySQL 4.0 entstanden ist
- In dem eine fremdes Modul läuft, auf dass ich keinen Einfluss nehmen kann.
- In dem mein Kunde ca. 700 Unterseiten angelegt hat, die als Datensätze vorhenden sind.
Dann muss man höchstwahrscheinlich davon ausgehen, dass da das hierzulande übliche Windows-1252 Verwendung fand, unter MySQL als Latin1 bezeichnet. Offizieller wäre ISO-8859-1. Die Unterschiede siehst du in der Wikipedia (ISO-8859-1) und betreffen vorwiegend das €-Zeichen und typografische Anführungszeichen. Die Browser sind auch so friedlich, bei angegebenem ISO-8859-1 und tatsächlich verwendetem Windows-1252 beispielsweise das als 0x80 kodierte € als solches anzuzeigen.
Wenn du noch wenig Überblick über die Problematik hast, solltest du erst einmal Zeichencodierung für Anfänger lesen.
Bei Punkt 2 deiner obigen Auflistung wäre interessant, was das Modul macht. Ist es nur Datendurchreicher oder betreibt es Stringverarbeitung (Zeichen zählen, Strings vergleichen oder umgestalten). Kommuniziert es mit anderen Systemem? Macht es dazu explizit Angaben zur Kodierung. Siehe auch nachfolgender Abschnitt. Wenn es recht alt ist, wird es von ISO-8859-1/Windows-1252/Latin1 ausgehen. Wenn es moderner und die Zeichenkodierungsproblematik berücksichtigend entwickelt wurde, hat es eine Konfigurationsmöglichkeit oder definiert irgendwo in der Dokumentation, was es verwendet. Dazwischen gibt es selbstverständlich noch weitere Möglichkeiten.
Als Übergangslösung, bevor du dich an UTF-8 wagst, kannst du ja erst einmal dafür sorgen, dass überall ISO-8859-1/Windows-1252/Latin1 vereinbart wird / eingestellt ist. Dazu und um kennenzulernen, wo überall was eingestellt werden kann, solltest du dir eine Übersicht malen, welche Systeme über welche Wege miteinander reden. Dazu muss man mitunter Sende- und Empfangsrichtung getrennt betrachten. Mindestens dabei sein sollten Browser, PHP/Webserver, das DBMS und nicht zu vergessen der Quellcode-Editor. Dabei solltest du herausfinden, wie die jeweiligen Systeme so eingestellt werden, dass sie intern richtig arbeiten können, wenn sie nicht nur Durchreicher sind. Weiterhin ist die Kommunikation untereinander wichtig. Wie teile System A dem System B mit, welche Kodierung zu verwenden sei, mit der Zusatzfrage wo genau es konfiguriert wird, damit diese Information den Weg von A nach B findet.
Alle Hilfsmittel inklusive Archivsuche und hier gestellten Nachfragen sind erlaubt, wir sind ja hier nicht bei einer Prüfung. :-)
Zum Beispiel hat Gunnar Bittersmann noch weitere Übersetzungen im Angebot, was die Komponenten Webserver und Browser betrifft. Mit dem Stichwort "SET NAMES" lassen sich im hiesigen Archiv viele Beiträge zu MySQL und PHP finden.
Lo!