Ir para conteúdo

POWERED BY:

Arquivado

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

ti.rafaell

Acentos desconfigurados vindo do BD

Recommended Posts

Bom eu aqui mais uma ves agora com erro de acentuação vinda do banco .

o problema é que estou fasendo uma verificação para poder dar o echo na descrição da página código

 

<?
$urlD = $_GET['url'];
$urlED = explode('/', $urlD);
$arquivoD = $urlED['0'];
$postD = $urlED['1'];
$idD = $urlED['2'];
$paginasD = array('sair', 'minhas_compras', 'login', 'meus_dados', 'home', 'cadastro','como_comprar', 'fale_conosco', 'quem_somos', 'produtos', 'carrinho', 'single');

	$SqlP = mysql_query("SELECT * FROM sistema");
	$Dados = mysql_fetch_object($SqlP);
	if(isset($arquivoD) && in_array($arquivoD, $paginasD) and $arquivoD !="produtos"){	
	echo $Dados->descricao;
	}elseif(isset($arquivoD) && $arquivoD != array($arquivoD, $paginasD) and $arquivoD !="produtos" and !isset($idD)){
	$sqlP = mysql_query("SELECT * FROM categorias_descontos WHERE slug ='".$arquivoD."'");
	$res = mysql_fetch_array($sqlP);
	echo 'Smart Connect categoria - '.$res["nome"].'';
	}elseif(isset($arquivoD) && $arquivoD =="produtos"){
    $AST = mysql_fetch_object(mysql_query("SELECT * FROM sub_produtos WHERE slug ='$postD'"));
	echo 'Smart Connect Sub Categoria - '.$AST->nome.'';
	}elseif(isset($idD)){
	$TxtS = mysql_fetch_object( mysql_query("SELECT * FROM texto_produtos WHERE id_produto ='$idD'"));
	echo strip_tags($TxtS->descricao);
	}
?>

 

o problema é aqui nesta parte

	}elseif(isset($idD)){
	$TxtS = mysql_fetch_object( mysql_query("SELECT * FROM texto_produtos WHERE id_produto ='$idD'"));
	echo strip_tags($TxtS->descricao);
	}
?>

a descrição que esta vindo do banco di acordo com o produto aparece com este tipo de código aqui no código fonte

 

 

 

 

01.fw.png

 

 

 

 

alguem saberia como posso alterar isto para aparecer corretamente e tambem pelo compartilhamento do facebook asim

 

02.fw.png

 

 

o campo de descrição do banco está como latin1_swedish_ci, e a minha página esta com

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

.

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

para resolver o problema dos dados vindos do banco, costumo configurar o BD como utf8_general_ci e a <meta> como iso-8859-1. Já no conteúdo estático do site (HTML) utilizo esses códigos para caracteres especiais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for possível (você está no começo do projeto, banco vazio), delete seu banco e recrie tudo com charset utf8_general_ci, e use algum editor de texto que permita editar o encoding dos seus arquivos php/html também para utf8, dessa forma não existirão desentendimentos entre as partes quando aparecerem ascentos.

 

Se não for mais possível deletar o banco de dados (como foi meu caso), tente mudar o charset do banco / tabelas para utf8_general_ci e converta todos os dados para esse encoding também (acho que alguns programas que gerenciam banco de dados fazem esse trampo, mas não conheço nomes).

 

E sinceramente cara, se você estiver na segunda opção, boa sorte... juro que fiquei pelo menos uma semana limpando cache do mysql e tentando entender por que mesmo com tudo em utf8 ainda dava erro nos ascentos, o melhor mesmo é criar um bd novo com utf8 do zero. No final, funcionou e eu até hoje não tenho certeza do que fiz para resolver, de tanto comando que dei e tanto tutorial que li.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for possível (você está no começo do projeto, banco vazio), delete seu banco e recrie tudo com charset utf8_general_ci, e use algum editor de texto que permita editar o encoding dos seus arquivos php/html também para utf8, dessa forma não existirão desentendimentos entre as partes quando aparecerem ascentos.

 

Se não for mais possível deletar o banco de dados (como foi meu caso), tente mudar o charset do banco / tabelas para utf8_general_ci e converta todos os dados para esse encoding também (acho que alguns programas que gerenciam banco de dados fazem esse trampo, mas não conheço nomes).

 

E sinceramente cara, se você estiver na segunda opção, boa sorte... juro que fiquei pelo menos uma semana limpando cache do mysql e tentando entender por que mesmo com tudo em utf8 ainda dava erro nos ascentos, o melhor mesmo é criar um bd novo com utf8 do zero. No final, funcionou e eu até hoje não tenho certeza do que fiz para resolver, de tanto comando que dei e tanto tutorial que li.

 

Exatamente utf8-decode e variados são puros workarounds. Comece certo tudo com UTF 8. Misturar charset é algo que induz ao erro.

 

E tente o PDO, além dele não estar depreciado como o mysql_*, ele possui uma facilidade para tratar charsets. usando na dsn o

 

charset=utf-8;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu resolvi deste jeito.

 

 $conn = mysql_connect(HOST,USER,PASS) or die ('Erro ao conectar'.mysql_error());

    $dbsa = mysql_select_db(DBSA)or die ('Erro ao selecionar banco de dados'.mysql_error());    


    mysql_query("SET NAMES 'utf8'");
    mysql_query('SET character_set_connection=utf8');
    mysql_query('SET character_set_client=utf8');
    mysql_query('SET character_set_results=utf8');

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://php.net/manual/pt_BR/function.strip-tags.php

 

Veja, como os dados estão em seu banco de dados ? os acentos, como estão ?

 

Defina todas as suas páginas de cadastro como utf-8.

 

Quando fizer o inser na base de dados, verifique como estão os dados, se eles estão sendo salvos com os acentos corretamente ou se estão desconfigurados e me diga.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alaerte Gabriel.. Correto minha página de cadatro esta em UTF-8 após cadastrar ele aparece asim no banco de dados

 

 


<div class="descricao">
	<ul>
		<li>
			• Preços e condições de pagamento válidos somente para compras no site <a class="info_imp" href="http://www.pontofrio.com.br"><strong style="color:#EA1D28">www.pontofrio.com.br</strong></a> ou pelo Televendas 4002-3050.</li>
		<li>
			• Em caso de divergência de preços, o valor final considerado será o do <a class="info_imp" href="https://carrinho.pontofrio.com.br/Site/Carrinho.aspx"><strong style="color:#EA1D28">Carrinho de Compras</strong>.</a></li>
		<li>
			• Imagens meramente ilustrativas.</li>
	</ul>
</div>

Bom ou seja ele cadastra as classe normal da formatação do editor se bem que nem inseri classe nem um e tal ,,,,,, mais os acentos já são cadastrados errados

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.