Pregunta

Estoy utilizando Purificador HTML en mi proyecto PHP y estoy teniendo problemas para conseguir que funcione correctamente con la entrada del usuario.

Estoy teniendo los usuarios introducen en HTML con un editor WYSIWYG ( TinyMCE ), pero cada vez que un usuario entra en la entidad HTML   (espacio de no separación) que se guarda en la base de datos ya que este carácter extranjero extraño (Â).

Sin embargo, la cosa es, cuando edito la entrada guardada usando el editor WYSIWYG que se muestra correctamente como  . También funciona correctamente cuando se muestra, solo que en el código fuente aparece como un espacio real, pero no el carácter de espacio de no separación.

Además, en la base de datos MySQL se muestra como el carácter extranjero extraño.

He leído el documento sobre Unicode y Purificador HTML y cambiado de base de datos y Web codificación de página sea UTF-8, pero todavía estoy teniendo problemas con el carácter de espacio de no separación no ser destrozado. Las otras entidades HTML, como &lt; y &gt;, se guardan como < y >, pero por qué no &nbsp;?

¿Fue útil?

Solución

El espacio de no separación no se está guardando en su base de datos como un carácter extranjero extraño, es que se guarda como dos caracteres. El carácter de espacio Unicode de no separación está codificada en UTF-8 como 0xC2 0xA0, que en la norma ISO-8859-1 se ve como "A" (es decir, un carácter extranjero extraño seguido de un espacio de no separación).

Probablemente se esté olvidando de hacer SET NAMES 'utf8' de su conexión a la base de datos, lo que hace que PHP para enviar sus datos a MySQL como ISO-8859-1 (por defecto).

Tener un vistazo a " UTF-8 hasta el final ... "para ver cómo configurar correctamente UTF-8 cuando se utiliza PHP y MySQL.

Otros consejos

También puede ayudar a que sepan que &#160; es una alternativa para &nbsp; que probablemente requerirá si alguna vez cualquier salida XML legible por humanos;)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top