Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Hansley

[Resolvido] Problema com htmlentities

Recommended Posts

Galera eu tenho um sistema de comentarios e me sugeriram que colocasse o "htmlentities" para retirar o html e evitar JS e etc..

uso assim:

$msg = (htmlentities($_POST['mensagem']));

mas agora os acentos não estão fucionando!

 

ficam assim: éá

 

algm sabe como resolver ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hansley,

 

Experimenta colocar o seguinte código no topo: header("Content-Type: text/html; charset=utf-8");

 

Abs. ;)

 

Galera eu tenho um sistema de comentarios e me sugeriram que colocasse o "htmlentities" para retirar o html e evitar JS e etc..

uso assim:

$msg = (htmlentities($_POST['mensagem']));

mas agora os acentos não estão fucionando!

 

ficam assim: éá

 

algm sabe como resolver ?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso é erro de codificação. A solução é simples: usar a mesma codificação em tudo: codificação de arquivo (definida no editor de texto), codificação do banco de dados e codificação do HTMl de saída.

 

Apenas inserir o header() pode não adiantar. Tem que unificar todas as codificações

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://br2.php.net/html_entities , Como terceiro parâmetro você pode informar o charset em html_entities(), Note :

Atualmente, o conjunto de caracteres ISO-8859-1 é usado com o padrão.

 

echo htmlentities($str, [b][font="Courier New"]ENT_COMPAT[/font][/b], 'UTF-8');

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hansley,

 

Experimenta colocar o seguinte código no topo: header("Content-Type: text/html; charset=utf-8");

 

Abs. ;)

 

 

--> Ja tem cara, ta assim :

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

 

 

isso é erro de codificação. A solução é simples: usar a mesma codificação em tudo: codificação de arquivo (definida no editor de texto), codificação do banco de dados e codificação do HTMl de saída.

 

Apenas inserir o header() pode não adiantar. Tem que unificar todas as codificações

 

--> Para ser sicero nao entendi muito bem! Pode esplicar melhor ?

 

 

 

 

http://br2.php.net/html_entities , Como terceiro parâmetro você pode informar o charset em html_entities(), Note :

Atualmente, o conjunto de caracteres ISO-8859-1 é usado com o padrão.

 

echo htmlentities($str, [b][font="Courier New"]ENT_COMPAT[/font][/b], 'UTF-8');

 

[]'s

 

--> Pode Falar mais sobre isso tambem parceiro ?

Sou leigo ainda em PHP.

 

*Bom, agradeço a todos que estao tentando me ajudar e o site no qual estou tendo esse problea é www.josewalter.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

os arquivos possuem codificação, que é interpretada pelo Sistema Operacional Essa codificação é definida no editor de textos.

 

 

A codificação do HTML de saída é a que está usando, com meta tag ou com header(), do PHP

 

 

e o BD também tem codificação, também chmada de collation

 

 

todas elas devem ser iguais. isso evita esse tipo de problemas de exibição

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Beraldo eu uso o Notepad++ e coloquei em "formatar" e tem Codificação UTF-8

e no phpmyadmin ta em utf8_unicode_ci

 

Devo mudar alguma coisa ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo,

 

Tenho um problema semelhante ao do Hansley, onde todas as informações preenchidas em formulário aparecem com as mesmos erros de acentuação no BD. Inicialmente pensamos ser a página enviando com codificação errada, porém me instruiram a utilizar a opção "print_r($_POST);" e verificamos que os dados estão sendo enviados com acentuação correta, distorcendo provavelmente no BD.

 

Meu editor e a saída estão todos em UTF-8. Porém tenho:

 

Collation de conexão do MySQL -> utf8_unicode_ci

Collation das tabelas relacionadas a infos de cadastro: latin1_swedish_ci

 

Pode ser esse latin1 o problema? Pode dar algum problema mudar a linguagem da tabela?

 

Grato!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei mudar o collation da tabela para UTF8_unicode_ci, não funciona!

 

O que mais ta me quebrando a cabeça é o seguinte:

 

Em um DB acontece este problema que eu te falei. Já em outro, acontece semelhante, onde as informações aparecem distorcidas no DB. PORÉM, na hora de serem mostradas na página, a acentuação aparece normal. Ou seja, fiquei na seguinte situação:

 

Em um DB, a página puxa as informações distorcidas do DB e as mostra distorcida;

Em outro DB, a página puxa as informações distorcidas do DB e as mostra com acentuação normal.

 

Diante da situação, procurei comparar as codificações nas duas situações. Todas as informações estão iguais, tanto no collation do DB quando nas páginas, tendo o charset=utf8.

 

Alguma idéia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo,

 

Aproveitando meu último post, você faz alguma idéia de porque existem aquelas duas situações distintas? Digo em relação a seguinte situação: Dois DB's com linguagens iguais e mesmas distorções. Em um, a página puxa os dados e ilustra distorcido. Em outra, a página puxa os dados e ilustra normalmente.

 

Eu entendi remontar o banco como mudar a linguagem e inserir um novo cadastro para verificar o comportamento. Já o fiz e o problema permanece.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não

deixe tudo em utf-8. Todos os arquivos, todas as tabelas do BD e todas as meta tags.

 

 

Então o que você me aconselha fazer ?

e lembrando que ele começou a ficar assim depois que coloquei o "htmlentities", antes fucionava normal os acentos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo,

 

Aproveitando meu último post, você faz alguma idéia de porque existem aquelas duas situações distintas? Digo em relação a seguinte situação: Dois DB's com linguagens iguais e mesmas distorções. Em um, a página puxa os dados e ilustra distorcido. Em outra, a página puxa os dados e ilustra normalmente.

 

Eu entendi remontar o banco como mudar a linguagem e inserir um novo cadastro para verificar o comportamento. Já o fiz e o problema permanece.

 

Está usando algum programa para visualizar o banco? Se sim, pode ser a codificação dele.

Se está usando linha de comando, depende da codificação do sistema operacional.

 

 

Então o que você me aconselha fazer ?

e lembrando que ele começou a ficar assim depois que coloquei o "htmlentities", antes fucionava normal os acentos!

 

Então por que quer usar htmlentities()?

Com urf-8 não precisa usar essa função

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Beraldo é porque alguem colocou um comentario com javascript que redirecionava para outro site.

Então pedi ajuda em uma comm de web de como evitar isso, ai me aconselharam htmlentities..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw cara usei strip_tags mesmo e deu certo!

Aproveitando aqui o topico me tira uma duvida:

 

se eu quizer usar assim, para digitar na mensagem [ b ] (sem espaço) e colocar str_replace para < b > depois da strip_tags da certo ?

se é que me entende..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.