Mailinglisten-Archive |
Hallo Ringo, [...] > Aktuelles Problem: > Die Klasse bekommt Eingaben von einem Formular mit > UTF8 Zeichensatz. > Aus "Müller" wird also "Müller" und damit hat schon > die Validierungsmethode der Klasse ein Problem, weil > die im Namen zwar deutsche Umlaute zulässt, aber > eben nicht diese anderen wilden Zeichen. > > Nun kann die Klasse aber von diversen Formularen und > auch von unterschiedlichen Entwicklern eingesetzt > werden, d.h. ich kann nicht annehmen, dass immer > UTF8 kodierte Umlaute ankommen. > > Wie geht ihr mit solchen Situationen um? Muss ich den > Entwickler dazu anhalten, meine Klasse immer nur > mit Daten zu füttern, die vorher mit utf8_decode() > behandelt sind? > Oder implementiere ich diese Dekodierung grundsätzlich > selbst in meiner Klasse? Sollte man vorher die Strings > auf solche Kodierung testen oder legt man sich bei > Formularen sowieso immer auf UTF8 fest? Nach Möglichkeit sollten die Formulare schon einheitlich sein. Wenn das nicht der Fall ist, kannst Du mit Hilfe von mb-detect-encoding http://de.php.net/manual/de/function.mb-detect-encoding.php herausfinden, welcher Zeichensatz verwendet wird. Wichtig ist auch die Frage, wie das Encoding der DB aussieht. Wenn in der Datenbank Latin-1 gespeichert wird, würde ich die UTF-8-Zeichen vorher umwandeln. Ansonsten halt umgekehrt Latin1 in UTF-8. > Sollte man PHP irgendwie auf UTF8 umschalten, damit > die Umlaute von vornherein korrekt ankommen? Die Fähigkeiten von PHP5 mit UTF-8 richtig umzugehen sind beschränkt, daher gibt es auch die mb-Funktionen, die den Mangel ausgleichen sollen. Mit PHP6 soll dann alles anders werden. ;-) Die Codierung des PHP-Skripts selbst als UTF-8 bringt nichts, es sei denn, man verwendet UTF-8 um Variableninhalte direkt lesbar in den Quelltext zu schreiben. > Legt man in der Dokumentation der Klasse fest, dass nur > ISO8859-1 Zeichen angeliefert werden dürfen? Wenn Du nur Latin-1 haben willst, dann musst Du halt entsprechend umwandeln. s.o. Eine Möglichkeit wäre, mit Entities zu arbeiten: Für ü -> ü Das hat halt Vor- und Nachteile. Vorteile sind die richtige Darstellung, egal wie die HTML-Ausgabe codiert ist, und die Speicherbarkeit als ASCII. Ein Nachteil ist, dass man alle Strings konvertieren muss, nicht nur die mit dem unerwünschten Zeichensatz, ein weiterer die schlechtere Lesbarkeit. > Fragen über Fragen. > Ich hoffe auf eine paar hilfreiche Antworten. Danke. Sicherlich hilft Dir diese Seite weiter: http://www.phpwact.org/php/i18n/charsets?s=utf8 Viele Grüße Peter -- http://www.media-palette.de/
php::bar PHP Wiki - Listenarchive