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 &lt; e &gt;, ser salvo como < e >, mas porque não &nbsp;?

Foi útil?

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 &#160; é uma alternativa para &nbsp; que você provavelmente vai exigir, se você nunca saída de qualquer XML legível;)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top