Apostrophe in utf-8 in IE9

Gut ... aber scheinbar beißen sich MySQL , HTTP , HTML und PHP gerne untereinander wenn es um UTF-8 / Unicode geht ...
Ich hatte bisher nie solche Probleme da ich immer Funktionen eingesetzt habe die vermieden haben das sowas dierekt in einer Datenbank steht *wie man es auch eigentlich aus Sicherheitsgründen machen sollte ... gerade bei so einem Zeichen welches von MySQL unter Umständen auch interpretiert werden könnte*.
 
Nein, gerade darauf kann man sich verlassen. MySQL, PHP, HTTP (ohnehin) und der Webbrowser können alle das standardisierte Unicode. Es ist nur eine Frage der Schriftarten, ob man das korrekte dargestellt bekommt.

Diese Hackstückelei, sich auf die ISO-Zeichensätze zu verlassen, sollte endlich aus der Welt geschafft werden. Stattdessen soll/kann/muss dann Unicode anständig gepflegt und vor allem von allen beteiligten unterstützt werden. Das dies der Fall ist, kann man sehen, wenn man die (noch notwendigen) Schritte unternimmt, durch die Bank weg UTF-8 anzufordern. Genau das wurde hier gemacht.

- Datenbank-Tabellen können UTF-8-Zeichen aufnehmen (elementar); Viele Systeme machen das ohnehin von haus-aus, manche muss man dazu überreden.
- Webserver verwendet PHP (SQL-Client) um dem Datenbank-Server (MySQL) mitzuteilen, das die Verbindung gefälligst in UTF-8 abzulaufen hat, egal was server-seitig oder client-seitig in der Config steht (oder auch nicht steht und deswegen auf Default-Werte [ISO!] zurück fällt)
- Webserver teilt seinem Client (Browser) mit, das die transportierten Daten in UTF-8 gesendet werden (mittels Header)
- Auf der Applikationsschicht wird zusätzlich noch mitgeteilt (auch wenn bei manchen nicht mehr notwendig wegen Punkt 3), das der Zeichensatz in der Sitzung (pro HTML-Seite) UTF-8 ist.

Du siehst, das alle logisch nachvollziehbaren Schritte unternommen worden sind, gerade deswegen, weil viele Konfigurationen das überhaupt nicht vorsehen und mit Standard-Werten gearbeitet wird, um fest zu vereinbaren, wie was gesendet und interpretiert werden soll.

Wenn wir irgendwann dabei sind, das nur noch Unicode verwendet wird, braucht man sich über solche Dinge keine Gedanken mehr machen. Bis dahin muss man als Entwickler einfach daran denken, das es so ist, wie es ist. Oder wir verpflichten einfach alle Webhoster dazu, die Einstellungen auf Unicode vorzunehmen, dann erledigt sich das auch von selbst.

Ich persönlich finde es gut, wie es ist, so muss man als Entwickler diese Hürde einfach nehmen, sich mit Zeichensätzen auseinander zu setzen. Es sorgt für ein bisschen Hirn-Hygiene und ist einfach ein zusätzlicher Baustein des großen Ganzen.

Edit:
da ich immer Funktionen eingesetzt habe die vermieden haben das sowas dierekt in einer Datenbank steht *wie man es auch eigentlich aus Sicherheitsgründen machen sollte ... gerade bei so einem Zeichen welches von MySQL unter Umständen auch interpretiert werden könnte*.

Und diese Funktionen, die du da verwendest könnten unter Umständen ohnehin unnötig, und damit evtl. sogar gefährlich sein. Zusätzlicher Code bedeutet immer auch zusätzliche Möglichkeiten, irgendwas falsch zu machen bzw. Fehler zuzulassen. Das es bestimmte Zeichen gibt, die syntaktisch Sicherheitslücken aufreisen können, ist klar, sollte aber durch entsprechende Schritte (Best-Practices) nicht zu tragen kommen. Echte Männer verwenden ohnehin Prepared-Statements, da ist man ohnehin weniger mit solchen Dingen konfrontiert :D
 
Zuletzt bearbeitet:
Hmm ... best-practice in Punkto Datenbank ist bei mir : per Parser alles kodieren was syntaktisch irgendeine Bedeutung hat *natürlich beim Auslesen wieder dekodieren* ... schön Escapen um Overflows/Underruns zu verhinden ... und natürlich prepared Statemens ... allerdings erst seit ich mit Java arbeite. Als ich mit PHP angefangen habe hab ich noch nicht so viel von OOP und der gleichen verstanden als das ich solch ausgefeilte Mechanismen zum Schutz hätte zusammenbauen können.
 
Genau das Escapen kannst du dir eigentlich sparen, wenn du PS verwendest. Es öffnet nur wieder weitere Lücken (mehr Code = mehr WTF). Konzentrier dich lieber aufs Filtern und Validieren, statt aufs Escapen ;-)
 
Naja ... Java und ich glaube auch PHP nehmen einem das Escapen ja zum Glück vollständig ab *zumindest so weit wie ich das mitbekommen habe*. Aber es gibt dann doch immer wieder welche die versuchen die in den Programmiersprachen eingebauten Escape-Funktionen zu manipulieren *was bei mir zum Glück bereits im Filter erkannt wird* ... desshalb lasse ich noch mal eine Escape-Methode drüberlaufen um auch alles was durch den Filter gekommen ist abzufangen ... man weis ja leider nie was man so an Datenmüll bekommt.

Die Anspielung auf WTF's/min finde ich aber gut gelungen =D.
 
Zurück