Ir para conteúdo

POWERED BY:

Arquivado

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

ebotega

[Resolvido] Acentuação em formulário - dados recebidos

Recommended Posts

Então... o que acontece... Tenho um formulário simples e tal, quando o cara digita algo com acentos no campo, recebo o que foi digitado com aqueles caracteres estranhos.

 

Já tentei htmlspecialchars, htmlentities, utf-8, funções para retirar acentos entre outros... não vai, dou um "echo" no $_POST e já aparece tudo virado. Exemplo: ação aparece "aAAo".

 

Se alguém tiver alguma ideia...

 

:huh:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara para resolver isso você deve mudar todos os Collation da tabela mysql para latin1_general_ci.

depois no seu formulario php, na hora de pegar as variaveis você deve usar htmlentities. pra mim sempre da certo.

 

$variavel = htmlentities($_POST['name-do-formulario']);

 

Faz q da certo. flw. abss

Compartilhar este post


Link para o post
Compartilhar em outros sites

então, seguem alguns resultados... frustrados.

 

 

<?php
header("Content-Type: text/html; charset=utf-8",true);
$valor = $_POST['nome'];
echo $valor;
//imprime: ação

echo "<br>-----------------<br>";

$palavra = $valor;
$palavra = ereg_replace("[^a-z A-Z 0-9]", "", strtr($palavra, "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ", "aaaaeeiooouucAAAAEEIOOOUUC"));
echo $palavra;
//imprime: aAAo

echo "<br>-----------------<br>";	

function trataTxt($var) 
{
$var = ereg_replace("[áàâãª]","a",$var);	
$var = ereg_replace("[éèê]","e",$var);	
$var = ereg_replace("[óòôõº]","o",$var);	
$var = ereg_replace("[úùû]","u",$var);	
$var = str_replace("ç","c",$var);
return $var;
}
echo trataTxt($valor);
//imprime: ação (detalhe, este seria para retirar os acentos)

echo "<br>-----------------<br>";

$variavel = htmlspecialchars($_POST['nome']);
echo $variavel;
//imprime: ação
?>

 

Obs: grava no banco de dados: "ação" :huh:

Retirando o "header("Content-Type: text/html; charset=utf-8",true);" dá tudo no mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse

header("Content-Type: text/html; charset=utf-8",true); 

retira os acentos das palavras. você

deve usar o

<?php header("Content-Type: text/html; charset=ISO-8859-1",true); ?>

 

E no seu código para pegar a variavel você usa o htmlentities exemplo:

<?php 
header("Content-Type: text/html; charset=ISO-8859-1",true); 
$valor = htmlentities($_POST['nome']); 
echo $valor; 

 

Com o htmlentities vai grava no banco codigos html, e quando você recuperar na página vai exibir texto normal , por exemplo a palavra "português" no banco vai grava como "Português" mas isso é normal. ahh e muda os collation no mysql para latin1_general_ci. :joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Lens, até não estava me importando muito como gravava no banco, mas complica na hora de fazer um select direto no banco, sem ser por uma página, então tinha que resolver isso. Com o Mysql Toad o banco já estava criando com latin1... Não sabia mais o que fazer...

 

Consegui arrumar da seguinte forma:

 

para gravar com acentos no banco:

$valor = utf8_decode($_POST['valor']);

 

para conseguir ler depois em uma página:

echo htmlentities($linha['valor'])

 

Para deixar registrado que, dentre várias, essa também funciona, pelo menos pra mim foi a única forma que deu certo.

 

Valeu a força.

:)

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.