Moin!
Danke euch beiden für die Nachricht.
Das Problem ist es inzwischen ein riesige Anwendung.
Dann ist es um so wichtiger, dass du diesen Anfangsfehler schnellstmöglich korrigierst - ansonsten fällt dir das Problem immer und immer wieder vor die Füße, und du wirst immer mehr Code einfügen müssen, um die ganzen Sonderfälle abzufangen - bis du am Ende vor lauter Sonderfallbehandlung gar nicht mehr verstehst, was da eigentlich abläuft.
Je eher du korrektes UTF-8-Handling integrierst, desto besser.
Die Problematik ist mir durch ausbewusst, dass es zu viele Codierungen sind. Problem ist es so zu machen wie du es sagst. Würde mich glaub ich x Tage brauchen aber so viel Zeit wird mir mein Chef nimmer dafür geben.
Dann wird es das Beste sein, wenn du mit ihm darüber sprichst.
Ist natürlich immer blöd, wenn man als derjenige, der es eigentlich wissen sollte, zugeben muß, schon direkt am Anfang einen Fehler gemacht zu haben - aber da gibts gewiß auch politisch vorteilhaftere Formulierungen. Wenn du die Gesamtumstellung in das Europroblem verpackst, sähe das vielleicht so aus: "Chef, ich weiß jetzt, warum das Eurozeichen nicht klappt. Dahinter steckt ein grundsätzliches Problem, dass ich vermutlich in drei Tagen beseitigt haben werde - danach werden wir nie wieder Probleme mit dem Encoding haben. Ok?"
Der Punkt 3 wird nicht mehr mit
htmlentities($strText, ENT_QUOTES);
sondern mit
htmlspecialchars($strText, ENT_QUOTES, "UTF-8");
gemacht. So funktioniert es auch mit der direkten Wiedergabe. Nur noch die Kodierung für eine Ajax-Rückgabe klappt noch nicht. Werd ich aber a schaffen.
Denk dran: Ajax bzw. das XMLHttpRequest-Objekt in Javascript arbeitet ausschließlich mit UTF-8. Du kannst noch soviel versuchen - alle anderen Encodings werden nie funktionieren.
Auch mit Entities wirst du potentiell auf Probleme stoßen, da das Funktionieren von Entities sehr vom Kontext abhängt, in dem sie betrachtet werden. XML beispielsweise kennt außer den Zeichen, die in XML Sonderbedeutung haben, keinerlei benannte Zeichen, also auch kein ä oder €. Sowas gibts nur in HTML bzw. XHTML - oder dort, wo man dem XML per DTD o.ä. die Entities beigebracht hat.
- Sven Rautenberg
"Love your nation - respect the others."