Question

J'utilise HTML Purifier dans mon projet PHP et ai de la difficulté à fonctionner avec des entrées utilisateur.

J'ai les utilisateurs entrent en HTML à l'aide d'un éditeur WYSIWYG ( TinyMCE ), mais à chaque fois qu'un utilisateur entre dans l'entité HTML   (espace insécable), il est enregistré dans la base de données que ce bizarre caractère étranger (Â).

Cependant, la chose est, quand je modifier l'entrée enregistrée en utilisant l'éditeur WYSIWYG, il s'affiche correctement comme  . Il fonctionne aussi bien lors de l'affichage, seulement dans le code source, il apparaît comme un espace réel, mais pas le caractère d'espace insécable.

En outre, il affiche dans la base de données MySQL comme étrange caractère étranger.

J'ai lu la doc sur le Purificateur Unicode et HTML et changé ma base de données et web Page de codage pour être UTF-8, mais je suis toujours des problèmes avec le caractère espace insécable ne pas être mutilée. Les autres entités HTML, comme &lt; et &gt;, sont sauvés comme < et >, mais pas pourquoi &nbsp;?

Était-ce utile?

La solution

L'espace insécable n'est pas enregistré dans votre base de données comme un étrange caractère étranger, il est en cours d'enregistrement en tant que deux caractères. Le caractère espace insécable Unicode est codée en UTF-8 0xC2 0xA0, qui dans la norme ISO-8859-1 ressemble « Â » (à savoir un étrange caractère étranger suivi d'un espace insécable).

Tu oublies sans doute faire SET NAMES 'utf8' sur votre connexion de base de données, ce qui provoque PHP pour envoyer ses données à MySQL comme ISO-8859-1 (la valeur par défaut).

Jetez un oeil à « UTF-8 tout au long de ... "pour voir comment configurer correctement UTF-8 lors de l'utilisation de PHP et MySQL.

Autres conseils

Il peut également vous aider à savoir que &#160; est un suppléant pour &nbsp; que vous aurez probablement besoin si vous tout XML lisible jamais sortie;)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top