hinom 5 Denunciar post Postado Agosto 28, 2013 Se não entender o que é e como funciona, sempre terá esse problema básico com charset. Este tópico é do tipo que se estenderá por centenas de posts no qual cada um diz uma coisa diferente sem nem ao menos diagnosticar ou entender o que acontece.. Aí vc vai aplicando os palpites e com isso pode ir complicando ainda mais o que já está complicado.. Muitas vezes tornando até irreversível como corrompimento de dados. Isso pode ser útil: http://forum.imasters.com.br/topic/340459-php-html-mysql-charset-encoding/ Note que o tópico não é "a solução definitiva" para o "seu caso específico". Compartilhar este post Link para o post Compartilhar em outros sites
tounoosso 0 Denunciar post Postado Agosto 29, 2013 OLha.. Ponto 1 - Está claro que o erro esta no armazenamento dos dados.. então pode afunilar suas dúvidas no script php.. Ponto 2 - eu continuo a pensar que o erro esta nas funções tag e slug Pensemos: se sua página esta em uft8 e seu formulário esta usando enctype, isso significa que quando os dados saem do form html para o script php ele já sai codificado. dai o php pega e codifica de novo.. ou seja.. provavelmente n ta dando nada certo pq seus dados estao sendo codificados 2 vezes.. uma pela propria definição na página e outra no tratamento pelo script php... dai quando vc retoma os dado do banco de dados vc decodifica uma só vez.. pode ser ai a pala... Faz assim.. deixe as funções tag e slug sem tratar os dados para ver q q acontece... function slug($string){ /* $a = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜüÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕ"!@#$%&*()_-+={[}]/?;:.,\\\'<>'; $b = 'aaaaaaaceeeeiiiidnoooooouuuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRr '; $string = utf8_decode($string); $string = strtr($string, utf8_decode($a), $b); $string = strip_tags(trim($string)); $string = str_replace(" ","-",$string); return strtolower(utf8_encode($string)); */ return $string } function tag($string){ /* $a = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜüÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕ"!@#$%&*()_-+={[}]/?;:.\\\'<>'; $b = 'aaaaaaaceeeeiiiidnoooooouuuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRr '; $string = utf8_decode($string); $string = strtr($string, utf8_decode($a), $b); $string = strip_tags(trim($string)); return strtolower(utf8_encode($string)); */ return $string } ?> A questão é que esse script é para fazer o link dinâmico... por exemplo... "Esta é uma postagem = esta-e-uma-postagem".. a questão é que, se não for assim, como posso fazer um cadastro com link dinâmico?... Estava seguindo uma video aula daquele campus upinside mas ja procurei la e esse problema aparece resolvido em uma outra aula, sem apresentar solução =/ Só uma ressalva, quanto ao script de cadastro, se eu deixo o charser=utf-8 funciona perfeitamente só que como eu disse antes, o título das páginas que ja estão cadastrados perdem a formatação sozinhos... Mesmo com o BD em formato utf-8 Esse é o script que eu uso para puxar o título e as metas do banco de dados <?php function get_titulo(){ $url = $_GET['url']; $urlE = explode('/', $url); $arquivo = $urlE['0']; $post = $urlE['1']; $paginas = array('empresa', 'servicos', 'contato'); if(isset($post) && $post != ''){ $sql = mysql_query("SELECT * FROM posts WHERE tituloSlug = '$post'") or die(mysql_error()); while($res = mysql_fetch_array($sql)){ $titulo = $res['titulo']; echo 'InoveStudio - '.$titulo; } }elseif(isset($arquivo) && $arquivo == 'loja'){ $sql = mysql_query("SELECT * FROM seo_empresa") or die(mysql_error()); while($res = mysql_fetch_array($sql)){ $titulo = $res['titulo']; echo $titulo; } }elseif(isset($arquivo) && $arquivo == 'servicos'){ $sql = mysql_query("SELECT * FROM seo_servicos") or die(mysql_error()); while($res = mysql_fetch_array($sql)){ $titulo = $res['titulo']; echo $titulo; } }elseif(isset($arquivo) && $arquivo == 'contato'){ $sql = mysql_query("SELECT * FROM seo_contato") or die(mysql_error()); while($res = mysql_fetch_array($sql)){ $titulo = $res['titulo']; echo $titulo; } }elseif(isset($arquivo) && $arquivo == ''){ $sql = mysql_query("SELECT * FROM seo_home") or die(mysql_error()); while($res = mysql_fetch_array($sql)){ $titulo = $res['titulo']; echo $titulo; } }elseif(isset($arquivo) && $arquivo == 'produtos'){ $sql = mysql_query("SELECT * FROM seo_portifolio") or die(mysql_error()); while($res = mysql_fetch_array($sql)){ $titulo = $res['titulo']; echo $titulo; } } } ?> Olhando pelo Notepad++ o arquivo que contem essa codificação está no formato "ANSI" e por mais que eu tente converter ele para "UTF-8 SEM BOM" ele não converte... será que pode ser esse o problema? Para puxar os titulos eu insiro direto no banco de dados, não uso cadastro nem nada, só busco os dados la dentro e exibo.. então la tem "Ç, ã, é, á" e por aí vai nos acentos... Alguem poderia dizer onde posso ver scripts que ensinem a criar uma url amigavel? Compartilhar este post Link para o post Compartilhar em outros sites
Jair Humberto 2 Denunciar post Postado Agosto 30, 2013 Ué, mas claro que vai funcionar. Se o seu código está em ISO-8859-1, e você está dizendo para o navegador que é UTF-8, vai dar erro ué. O navegador vai tentar decodificar como UTF-8 um código que está em ISO-8859-1. Mas você vai manter o banco em UTF-8 e a página em ISO-8859-1? Você deveria colocar tudo igual, página e banco, senão, você vai ter problemas ao inserir dados no banco. Você estará inserindo em ISO-8859-1 e o banco vai estar em UTF-8. Um dia, quando você for utilizar esse banco em outra aplicação que seja UTF-8, vai dar erro. Você precisa ser coerente com as codificações. É como o supertelnet falou, mantenha tudo igual. Se você quer manter o UTF-8 e resolver o problema do título, faz assim: Muda a codificação do seu editor para UTF-8 (sem BOM, porque esse BOM atrapalha na programação), depois disso apaga o seu título e escreve denovo. Embora para textos literais, ou seja, que ficam fixos na página o ideal é você usar entities do HTML, como o KhaosDoctor sugeriu: título. Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Xavier 189 Denunciar post Postado Agosto 30, 2013 Ctrl+U e posta o html gerado!!! Compartilhar este post Link para o post Compartilhar em outros sites