Ir para conteúdo

POWERED BY:

Arquivado

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

Campão

Codificação de Caracteres Especiais

Recommended Posts

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

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

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

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

×

Informação importante

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