Frage

Ich bin mit HTML Purifier in meinem PHP-Projekt und Mühe habe immer es richtig mit Benutzereingaben zu arbeiten.

Ich habe Benutzer geben in HTML-WYSIWYG-Editor ( TinyMCE ), aber immer dann, wenn ein Nutzer in der HTML-Entität   (non-breaking space) es wird in die Datenbank als dieses seltsame fremde Zeichen (Â) gespeichert.

Doch die Sache ist, wenn ich den gespeicherten Eintrag bearbeiten Sie den WYSIWYG-Editor es richtig als   angezeigt wird. Es ist auch richtig funktioniert, wenn angezeigt wird, nur dass im Quellcode es scheint, als ein realen Raum, aber nicht das non-breaking Leerzeichen.

Auch in der MySQL-Datenbank zeigt es als seltsam fremden Charakter.

las ich das doc über Unicode und HTML Purifier und änderte meine Datenbank und Web Seite Kodierung UTF-8, aber ich habe immer noch Probleme mit den non-breaking Raumzeichen nicht verstümmelt zu sein. Die anderen HTML-Entitäten, wie &lt; und &gt;, erhalten als < und > gespeichert, aber warum nicht &nbsp;?

War es hilfreich?

Lösung

Der non-breaking Raum wird in der Datenbank als einen seltsam fremder Charakter nicht gespeichert werden, es wird gespeichert als zwei Zeichen. Das Unicode non-breaking Leerzeichen wird in UTF-8 als 0xC2 0xA0 codiert, die in ISO-8859-1 sehen aus wie "Â" (das heißt ein seltsames Fremd von einem Leerzeichen non-breaking gefolgt Zeichen).

Sie vergessen wohl SET NAMES 'utf8' auf Ihrer Datenbank-Verbindung zu tun, die PHP führt seine Daten an MySQL als ISO-8859-1 zu senden (die Standardeinstellung).

Haben Sie einen Blick auf „ UTF-8 den ganzen Weg durch ... ", um zu sehen, wie man richtig eingerichtet UTF-8 bei der Verwendung von PHP und MySQL.

Andere Tipps

Es kann Ihnen auch helfen, dass &#160; zu wissen, ist eine alternative für &nbsp;, die Sie wahrscheinlich, wenn Sie jemals Ausgang jeder Menschen lesbaren XML erfordert;)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top