HTML Purifier comer seletivamente caracteres especiais
-
21-08-2019 - |
Pergunta
Usando PHP contra um banco de dados compatível UTF-8. Veja como entrada vai em.
- tipos de usuário de entrada em textarea
- textarea codificado com javascript escape ()
- passou via HTTP POST
- decodificado com PHP rawurldecode ()
- passou por HTMLPurifier com as configurações padrão
- escapou para o MySQL e armazenado no banco de dados
E ele sai da maneira usual e eu corro unescape () no carregamento da página. Esta é permitir que as pessoas, por exemplo, copiar e colar diretamente de um documento do word e ter as aspas inteligentes aparecer.
Mas HTMLPurifier parece estar a sobrepor não-UTF-8 caracteres especiais, aqueles que escape () a uma expressão% simples, como Ö, que escapa para% D6, enquanto smartquotes escapar a% u2024 ou algo e ir para o banco de dados dessa maneira. Ele pega tanto o carácter especial e aquele imediatamente a seguir.
Eu preciso mudar alguma coisa nesse processo. Talvez eu preciso mudar várias coisas.
O que posso fazer para não ficar caracteres especiais derrotado?
Solução
- textarea codificado com javascript escape ()
escape
não é seguro para não-ascii. Use escapeURIComponent
- passou via HTTP POST
Eu suponho que você usar XmlHttpRequest
? Se não, certifique-se de que a página que contém o formulário é servido como utf-8.
- decodificado com PHP rawurldecode ()
Se você acessar o valor através $_POST
, você não deve decodificá-lo, uma vez que já foi feito. Se o fizer, vai atrapalhar dados.
- escapou para o MySQL e armazenado no banco de dados
Certifique-se de que você não tem magic quotes
ligado. Certifique-se de que os banco de dados armazena tabelas como utf-8 (A codificação e o agrupamento deve ser tanto utf-8). Certifique-se de que a conexão entre PHP e MySQL é utf-8 (Use set names utf8
, se você não usar DOP).
Finalmente, certifique-se de que a página é servido como utf-8 quando você saída a corda novamente.