Moin,
was passiert eigentlich mit den ganzen Sonderzeichen, wenn man mit HTML-Formularen, PHP und mySQL zwischen MAC, Windows und Linux rumhantiert?
Konkretes Beispiel: Ich habe ein HTML-Formular mit einer und einem Absende-Button. Beim Absenden wird ein PHP-Skript aufgerufen, das auf einem Linux-Rechner liegt (PHP/4.3.3, Apache/2.0.48, mySQL/4.0.15).
Ich gehe jetzt mal davon aus, dass das PHP-Skript die „originalen“ ASCII-Zeichen sieht, egal, was für ein Zeichen dahinter steckt, oder? Wenn also ein Windows-User z.B. ein ä eingibt, sieht PHP das Zeichen 228. Gibt PHP das nun auf einem Mac-Browser aus, erscheint dort wahrscheinlich ein Promille-Zeichen, oder? Das ließe sich natürlich für alle möglichen Zeichen durchspielen.
Wenn ich nun ein PHP-Skript schreiben möchte, das alle Eingaben robust verarbeitet, egal, von welchem System sie kommen, und ebenso robust wieder ausgibt, egal wohin sie gehen, habe ich wohl ganz schön die A-Karte gezogen, wie ich das momentan sehe. Zu allem Überfluss steckt manchmal noch mySQL mit dazwischen, aber es geht sogar schon mit der simplen Eingabe-Überprüfung per JavaScript los: Wie soll ich z.B. einem Mac-Browser klarmachen, dass das ß-Zeichen erlaubt ist, aber das §-Zeichen nicht, wenn ich einem Windows-Browser genau das Gegenteil beibringen will? Das Windows-§ ist ja beim Mac das ß.
Läuft es etwa wirklich darauf hinaus, dass ich gucken muss, was für ein System mit dem PHP-Skript spricht, um daraufhin irgendwelche Konvertierungen vorzunehmen, falls notwendig? Wenn ja, womit veranstaltet mah sowas? Mit iconv , falls das überhaupt installiert ist? Und wenn ja, mit welchen Parametern? Das PHP-Handbuch ist da leider nicht sehr auskunftsfreudig.
Ist vielleicht UTF8 das Zauberwort? Wenn ja, wie geht man damit um? Und bläst das einen Text nicht ziemlich auf beim Abspeichern in einer Datenbank?
Danke für Hinweise,
Kristian