Campão 0 Denunciar post Postado Julho 16, 2010 Bom dia galera, beleza? Tenho uma duvida sobre codificação de dados capturados pelo PHP no MySQL! Seguinte estou fazendo um RSS dinamico, que assim que meu cliente cria uma nova noticia no site dele, o PHP ja cria um novo arquivo RSS e salva por cima do antigo! Abaixo o site do qual falo e o endereço do RSS http://www.febec.org.br/ http://www.febec.org.br/rss/feed.rss O problema, como vcs devem ver no RSS, é que os titulos das noticas vem com aqueles codigos de caracteres especiais de HTML CURSO FORNO & FOGÃO Quando na verdade era para aparecer CURSO FORNO & FOGÃO Então, fiz de tudo, pq os dados vem do mesmo banco de dados, e a unica coisa que difere um do outro, é que eles vem de campos diferentes, um de um campo VARCHAR e outro de um campo TEXT abaixo segue meu codigo para que possam dar uma analisada! <?php $conteudo = ""; $conteudo .= "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?> "; $conteudo .= "<rss version=\"2.0\"> "; $conteudo .= "<channel> "; $conteudo .= "<title>FEBEC</title> "; $conteudo .= "<link>http://www.febec.org.br</link> "; $conteudo .= "<description>Federação Brasileira de Entidades de Combate ao Câncer</description> "; include("inc_conexao.php"); function mostraDescricao($descricao, $caracteres){ $posicao = strpos($descricao, " ", $caracteres); $descricaoFinal = substr($descricao, 0, $posicao) . "..."; return $descricaoFinal; } $sql = mysql_query("SELECT codigo, titulo, conteudo, data FROM noticias WHERE status='sim' ORDER BY data DESC LIMIT 10"); $q_sql = mysql_num_rows($sql); for ($i=0 ; $i<$q_sql ; $i++){ $r_sql = mysql_fetch_row($sql); $codigo = $r_sql[0]; $titulo = utf8_decode(strip_tags(htmlspecialchars(rteSafe($r_sql[1]), ENT_COMPAT, 'UTF-8'))); $conteudoMgs = utf8_decode(strip_tags(html_entity_decode($r_sql[2], ENT_COMPAT, 'UTF-8'))); $conteudo .= "<item> "; $conteudo .= "<title>" . $titulo . "</title> "; $conteudo .= "<link>http://www.febec.org.br/noticias.php?codigo=$codigo</link> "; $conteudo .= "<description>" . mostraDescricao($conteudoMgs, 200) . "</description> "; $conteudo .= "</item> "; } $conteudo .= "</channel> "; $conteudo .= "</rss> "; $ponteiro = fopen("feed.rss", "w"); fwrite($ponteiro, $conteudo); fclose($ponteiro); ?> So estou com esse problema de codificação, alguem sabe o que pode ser? Desde já agradeço! Abraços Compartilhar este post Link para o post Compartilhar em outros sites
viniciuscainelli 0 Denunciar post Postado Julho 16, 2010 Olá Amigo, Tente fazer o seguinte: Abra com algum editor que você possa escolher o encoding do arquivo. Por Exemplo: no PHPDesigner eu escolho no rodapé File Encoding > UTF-8. Mas no seu caso você deve salvar como ANSI. TEnte também tirar o utf8_decode... talvez esteja vindo como iso. $titulo = strip_tags(htmlspecialchars(rteSafe($r_sql[1]), ENT_COMPAT)); $conteudoMgs = strip_tags(html_entity_decode($r_sql[2], ENT_COMPAT)); Esperoq ue te ajude. This is it! Vinicius Cainelli Compartilhar este post Link para o post Compartilhar em outros sites
Campão 0 Denunciar post Postado Julho 18, 2010 Vinicius, obrigado pela atenção, mas não funcionou não cara!!!! o codigo final ficou assim <?php $conteudo = ""; $conteudo .= "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?> "; $conteudo .= "<rss version=\"2.0\"> "; $conteudo .= "<channel> "; $conteudo .= "<title>FEBEC</title> "; $conteudo .= "<link>http://www.febec.org.br</link> "; $conteudo .= "<description>Federação Brasileira de Entidades de Combate ao Câncer</description> "; include("inc_conexao.php"); function mostraDescricao($descricao, $caracteres){ $posicao = strpos($descricao, " ", $caracteres); $descricaoFinal = substr($descricao, 0, $posicao) . "..."; return $descricaoFinal; } $sql = mysql_query("SELECT codigo, titulo, conteudo, data FROM _noticias WHERE status='sim' ORDER BY data DESC LIMIT 10"); $q_sql = mysql_num_rows($sql); for ($i=0 ; $i<$q_sql ; $i++){ $r_sql = mysql_fetch_row($sql); $codigo = $r_sql[0]; $titulo = (htmlspecialchars(strip_tags($r_sql[1]), ENT_NOQUOTES)); $conteudoMgs = (htmlspecialchars(strip_tags($r_sql[2]), ENT_NOQUOTES)); $conteudo .= "<item> "; $conteudo .= "<title>" . $titulo . "</title> "; $conteudo .= "<link>http://www.febec.org.br/noticias.php?codigo=$codigo</link> "; $conteudo .= "<description>" . mostraDescricao($conteudoMgs, 200) . "</description> "; $conteudo .= "</item> "; } $conteudo .= "</channel> "; $conteudo .= "</rss> "; $ponteiro = fopen("feed.rss", "w"); fwrite($ponteiro, $conteudo); fclose($ponteiro); ?> mas o RSS continua do mesmo jeito, com os titulos com aqueles caracteres especiais! O que me estranha mais é que no banco de dados os dados estão da mesma forma!!! Se alguem tiver mais alguma ideia, por favor, me ajudem Obrigado pela atenção! Compartilhar este post Link para o post Compartilhar em outros sites
Silvio Ney 0 Denunciar post Postado Fevereiro 3, 2012 Tente abrir com o notepad++ o seu arquivo que possui o código e depois vá no menu -> formatar -> Converter para ANSI. Deve ser apenas a codificação do arquivo. :) Compartilhar este post Link para o post Compartilhar em outros sites