#Der Eingabetext wird in meiner Datenbank mySql(V5.1.61) gespeichert, nachdem der Text die Funktion htmlspecialchars() durchlaufen hat.
Das Feld in der Datenbank ist ein Longtext utf8_unicode.Jetzt wollte ein Nutzer folgenden Text speichern:
Hastalığa karşı değil, Sağlık için…In meiner Datenbank wurde aber folgedes gespeichert:
Hastalığa karşı değil, Sağlık için…
Da PHP Zeichen als solche nicht kennt, hat htmlspecialchars() unter anderem einen Parameter, der die Zeichenkodierung bestimmt. Vielleicht probierst du damit mal ein wenig.
Mir ist zwar im Moment schleierhaft, warum das überhaupt notwendig wäre, htmlspecialchars() ist nicht htmlentities() und soll nur fünf einfache Zeichen im untersten Bereich umwandeln, aber vielleicht hilft's ja.
Davon ganz unabhängig solltest du Texte meiner Meinung nach besser erst dann mit htmlspecialchars() sichern, wenn es wirklich nötig ist - nämlich direkt bei der Ausgabe. Der Datenbank tut HTML nicht weh und vor allem verschleiert die Absicherung gleich nach der Eingabe nur den Zustand der Daten an der Ausgabe.
Woher soll ich wissen, ob Daten sicher ausgegeben werden können? Weil ich sie irgendwann mal irgendwo abgesichert habe und darauf vertraue, das "ja immer so zu machen"? Wäre mir zu gewagt. Steht die Absicherung direkt bei der Ausgabe, stellt sich die Frage gar nicht erst, weil htmlspecialchars() gleich beim echo zu sehen ist und nicht kilometerweit entfernt bei irgendeiner Eingabebehandlung. Vertrauen ist gut, Kontrolle ist besser.
Dein Kodierungsproblem wegen des merkwürdigen htmlspecialchars()-Verhaltens täte sich obendrein in Wohlgefallen auflösen. Aber das nur als Anregung.