Ir para conteúdo

POWERED BY:

Arquivado

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

Paulo Afonso

[Resolvido] Problema com acentos trazidos do sql server

Recommended Posts

Olá pessoal estou com problemas na hora de mostrar o resultado de uma consulta trazida do banco de dados sql server.

No BD o collation está latin1.

Na minha página o enconding e charset como utf8.

Quando mostro o resultado os acentos estão zuados.

 

Alguém pode me ajudar??

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
(..)
$data = mssql_query($sql, $conecta);
	while ($artigo = mssql_fetch_object($data))
	{
		echo $artigo->titulo;
	}
?>
</body>
</html>

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

use o charset= iso-8859-1 no lugar de UTF-8

 

e no php antes de tudo coloque

 

header("Content-Type: text/html; charset=iso-8859-1",true);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, fiz os testes aqui e mesmo assim não resolveu.

 

Agora o resultado aparece assim:

Estudo de caso: Inspe‡Æo do Pier de atraca‡Æo Tamba£

 

antes aparecia assim:

Estudo de caso: Inspe��o do Pier de atraca��o Tamba�

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poxaa tente assim

 

Ops ia postar isso

Vou ver aki, eu tbm to com esse problema, mas nao puxando do banco!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resultado:

Sem nada: Estudo de caso: Inspe‡Æo do Pier de atraca‡Æo Tamba£

utf8_decode: Estudo de caso: Inspe‡? do Pier de atraca‡? Tamba£

utf8_encode: Estudo de caso: Inspe‡Æo do Pier de atraca‡Æo Tamba£

htmlentities: Estudo de caso: Inspe‡Æo do Pier de atraca‡Æo Tamba£

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta colocar um dado novo, usando a formatação ISO no arquivo PHP e consulta ele pra ver se funciona. Os dados que estão no banco já devem estar corrompidos...

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo,

correto, funcionou.

Porém e meus dados já gravados, eu preciso deles.

 

Mas eu não entendi direito.

Por que no banco de dados está com o collation = SQL_Latin1_General_CP850_CI_AI e os dados inseridos ficaram assim

BD: ßÚݾ·þÒÔ

Inserido: áéíóúçãâ

 

E outra coisa, na outra aplicação em ASP onde os dados são inseridos aparece corretamente os acentos.

Além de ser inserido os dados através de lá.

Então o ASP insere no banco as informações e eu em outra aplicação PHP quero consultar esse mesmo dado.

O ASP está com o charset e enconding iso-8859-1 e quando insere no banco insere os dados com acentos.

BD: Estudo de caso: Inspeção do Pier de atracação Tambaú

 

e quando consulto no php vem este Resultado:

Estudo de caso: Inspe‡Æo do Pier de atraca‡Æo Tamba£

 

 

E ai? como fazer para consultar esses dados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salve o arquivo como ANSI, no notepad!

Salve e Rode e veja no que dá Paulo!

 

T+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa nem com isso...

 

Original : Estudo de caso: Inspe‡Æo do Pier de atraca‡Æo Tamba£

TRANSLIT : Estudo de caso: Inspe

IGNORE : Estudo de caso: Inspeo do Pier de atracao Tamba

Plain : Estudo de caso: Inspe

Compartilhar este post


Link para o post
Compartilhar em outros sites

while ($artigo = mssql_fetch_object($data))
	{
		$text = $artigo->pt_titulo;
		echo "<br>".'Original : ', $text, PHP_EOL;
		echo "<br>".'TRANSLIT : ', iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text), PHP_EOL;
		echo "<br>".'IGNORE   : ', iconv("UTF-8", "ISO-8859-1//IGNORE", $text), PHP_EOL;
		echo "<br>".'Plain	: ', iconv("UTF-8", "ISO-8859-1", $text), PHP_EOL;
		echo "<br>";
		echo "<br>".'Original : ', $text, PHP_EOL;
		echo "<br>".'TRANSLIT : ', iconv("ISO-8859-1", "UTF-8//TRANSLIT", $text), PHP_EOL;
		echo "<br>".'IGNORE   : ', iconv("ISO-8859-1", "UTF-8//IGNORE", $text), PHP_EOL;
		echo "<br>".'Plain	: ', iconv("ISO-8859-1", "UTF-8", $text), PHP_EOL;
		echo "<br>";
		echo "<br>".'Original : ', $text, PHP_EOL;
		echo "<br>".'TRANSLIT : ', iconv("UTF-8", "ISO-8859-1//TRANSLIT", iconv("ISO-8859-1", "UTF-8//TRANSLIT", $text)), PHP_EOL;
		echo "<br>".'IGNORE   : ', iconv("UTF-8", "ISO-8859-1//IGNORE", iconv("ISO-8859-1", "UTF-8//TRANSLIT", $text)), PHP_EOL;
		echo "<br>".'Plain	: ', iconv("UTF-8", "ISO-8859-1", iconv("ISO-8859-1", "UTF-8//TRANSLIT", $text)), PHP_EOL;
	}

 

e o resultado:

Original : Estudo de caso: Inspe‡Æo do Pier de atraca‡Æo Tamba£

TRANSLIT : Estudo de caso: Inspe

IGNORE : Estudo de caso: Inspeo do Pier de atracao Tamba

Plain : Estudo de caso: Inspe

 

Original : Estudo de caso: Inspe‡Æo do Pier de atraca‡Æo Tamba£

TRANSLIT : Estudo de caso: Inspe‡Æo do Pier de atraca‡Æo Tamba£

IGNORE : Estudo de caso: Inspe‡Æo do Pier de atraca‡Æo Tamba£

Plain : Estudo de caso: Inspe‡Æo do Pier de atraca‡Æo Tamba£

 

Original : Estudo de caso: Inspe‡Æo do Pier de atraca‡Æo Tamba£

TRANSLIT : Estudo de caso: Inspe‡Æo do Pier de atraca‡Æo Tamba£

IGNORE : Estudo de caso: Inspe‡Æo do Pier de atraca‡Æo Tamba£

Plain : Estudo de caso: Inspe‡Æo do Pier de atraca‡Æo Tamba£

 

 

Ah e para o enconding e charset utf8 e iso-8859-1 testei nos dois deu mesmo resultado

 

array(3) { ["input_encoding"]=> string(10) "ISO-8859-1" ["output_encoding"]=> string(10) "ISO-8859-1" ["internal_encoding"]=> string(10) "ISO-8859-1" }

 

e para ser bem claro no BD SQL Server o collation é SQL_Latin1_General_CP850_CI_AI

e os dados estão gravados assim:

Estudo de caso: Inspeção do Pier de atracação Tambaú

Compartilhar este post


Link para o post
Compartilhar em outros sites

como assim henry?

existe uma aplicação em ASP que faz isso corretamente, até mesmo é por lá q os dados são gravados no BD.

Mas tenho que fazer outra aplicação em PHP para retornar esses dados só q ai vem o erro de acentos e caracteres.

 

...

Compartilhar este post


Link para o post
Compartilhar em outros sites

você acabou respondendo acima e nem vi.

 

cara é o seguinte:

 

testei aki assim:

 

a página gerando sob

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br">

<head>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
echo 'Estudo de caso: Inspeção do Pier de atracação Tambaú'; // normal
se charset for UTF-8

<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
echo iconv("ISO-8859-1", "UTF-8", $ctr);
e rodando normal.

 

agora é ver como vem do banco!

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.