Domanda

HTML Purifier nel mio progetto PHP e sto avendo problemi a farlo funzionare correttamente con l'input dell'utente.

Sto avendo gli utenti entrano in HTML utilizzando un editor WYSIWYG ( TinyMCE ), ma ogni volta che un utente inserisce nell'entità HTML   (spazio unificatore) questo viene salvato nel database come questo personaggio straniero strano (Â).

Tuttavia, il fatto è che quando ho modificare la voce salvato utilizzando l'editor WYSIWYG che venga visualizzato correttamente come  . E funziona anche correttamente quando visualizzato, ma solo che nel codice sorgente si presenta come uno spazio reale, ma non il carattere di spazio non-breaking.

Inoltre, nel database MySQL visualizza come il carattere straniero strano.

Ho letto il doc su Unicode e HTML Purifier e cambiato il mio database e web codifica pagina sia UTF-8, ma sono ancora problemi con il carattere spazio unificatore non essere alterati. Le altre entità HTML, come &lt; e &gt;, vengono salvati come < e >, ma perché non &nbsp;?

È stato utile?

Soluzione

Lo spazio unificatore non viene salvato nel database come un carattere straniero strano, è in fase salvato come due caratteri. Il carattere di spazio non Unicode rottura è codificato in UTF-8 come 0xC2 0xA0, che in ISO-8859-1 assomiglia "A" (cioè un personaggio straniero strano seguito da uno spazio non-breaking).

Probabilmente vi state dimenticando di fare SET NAMES 'utf8' sulla vostra connessione al database, che fa sì che PHP per inviare i dati a MySQL come ISO-8859-1 (il default).

Date un'occhiata a " UTF-8 fino in fondo ... "per vedere come impostare correttamente UTF-8 quando si utilizza PHP e MySQL.

Altri suggerimenti

Può anche aiutare a sapere che &#160; è un supplente per &nbsp; che è probabile che richiederà se mai uscita qualsiasi XML leggibile;)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top