Como chegar & nbsp se comportar corretamente usando HTML Purifier?
-
22-08-2019 - |
Pergunta
Eu estou usando HTML Purifier no meu projeto PHP e estou tendo problemas em fazê-la funcionar corretamente com a entrada do usuário.
Eu estou tendo os usuários entram em HTML usando um editor WYSIWYG ( TinyMCE ), mas sempre que um usuário digita na
entidade HTML (espaço sem quebra) que fica guardado no banco de dados como esse personagem estrangeiro estranho (Â
).
No entanto, a coisa é, quando eu editar a entrada salvo usando o editor WYSIWYG que é exibido corretamente como
. Ela também funciona corretamente quando exibido, só que o código-fonte que aparece como um espaço real, mas não a quebra não-caractere de espaço.
Além disso, no banco de dados MySQL que mostra como o personagem estrangeiro estranho.
Eu li o doc sobre Unicode e HTML Purifier e mudou a minha base de dados e web página codificação para ser UTF-8, mas ainda estou tendo problemas com o caractere de espaço não-quebra não sendo mutilado. As outras entidades HTML, como <
e >
, ser salvo como <
e >
, mas porque não
?
Solução
O espaço não-separável não está sendo guardada no seu banco de dados como um personagem estrangeiro estranho, ele está sendo salvo como dois caracteres. O carácter de espaço não-Unicode quebrar é codificado em UTF-8 como 0xC2 0xA0
, que em iso-8859-1 aparência como "A" (isto é, um caracteres estrangeiros estranho seguido de um espaço não quebra).
Você provavelmente esquecendo de fazer SET NAMES 'utf8'
na sua conexão de banco de dados, o que faz com PHP para enviar seus dados para o MySQL como ISO-8859-1 (o padrão).
Tenha um olhar em " UTF-8 todo o caminho ... "para ver como configurar corretamente UTF-8 quando usando PHP e MySQL.
Outras dicas
Ele também pode ajudá-lo a saber que  
é uma alternativa para
que você provavelmente vai exigir, se você nunca saída de qualquer XML legível;)