ebotega 2 Denunciar post Postado Fevereiro 21, 2011 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
gremio10 14 Denunciar post Postado Fevereiro 21, 2011 Crie um array de palavras que não podem aparecer, tipo acentuadas, e as que devem tomar o seu lugar, e use o srt_replace... Compartilhar este post Link para o post Compartilhar em outros sites
Neto Braghetto 3 Denunciar post Postado Fevereiro 21, 2011 Kra utilize esta linha no inicio do seu script <?php header("Content-Type: text/html; charset=ISO-8859-1",true); ?> Compartilhar este post Link para o post Compartilhar em outros sites
LenS 0 Denunciar post Postado Fevereiro 21, 2011 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
ebotega 2 Denunciar post Postado Fevereiro 21, 2011 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
LenS 0 Denunciar post Postado Fevereiro 22, 2011 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
ebotega 2 Denunciar post Postado Fevereiro 22, 2011 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