Jump to content

Recommended Posts

Posted (edited)

Olá pessoal

Estou com um problema no meu site em realção ao charset (desde já peço desculpa se não for o local correto para fazer esta dúvida)

o meu charset está defenido como utf-8 mas numa tabela os resultados que tenham acentos ou caracteres especiais aparece isto �

por exemplo, tenho um nome na tabela "João Maria" mas aparece "Jo�o Maria"

mas se escrever o mesmo nome fora da tabela aparece normalmente "João Maria"

este é o código da tabela:

<table border="0.1" style="border:1px solid black; width: 100%; margin-bottom: 10px;">
<thead align="center" style="color: yellow; background-color: black;">
 <th style="font-weight: bold; width:20%">Nome</th>
 <th style="font-weight: bold; width:20%">Prova</th>
 <th style="font-weight: bold; width:20%">Marca</th>
 <th style="font-weight: bold; width:20%">Local</th>
 <th style="font-weight: bold; width:20%">Data</th>
</thead>
<!--loop que esrcreve os dados na tabela-->
<?php
while($row = mysql_fetch_array($rs)) {
?>
<tr style="color: black; background-color: yellow">
 <td><?php echo $row["Nome"]; ?></td>
 <td><?php echo $row["Prova"]; ?></td>
 <td><?php echo $row["Marca"]; ?></td>
 <td><?php echo $row["Local"]; ?></td>
 <td><?php echo $row["Data"]; ?></td>
</tr>
<?php
}
?>
  </table>

se alguem me conseguir explicar o porquê e como resolver, agradecia

Edited by vila3
Posted

tipo, eu ja tenho isso do

<meta charset="utf-8" />

e funciona em toda a página exepto dentro da tabela

mas se eu retirar isso do "<meta charset="utf-8" />" aparece tudo bem dentro da tabela mas fora da tabela passa a ficar tudo com erro

Posted (edited)

se tens uma caixa preta com duas cordas, e ao puxar por uma ouves uma gato a gemer e se puxares a outra ouves um cão achas que o problema está na maneira como puxas a corda ?

se te disseram para colocar a tag meta na página foi por uma razão muito clara : dizer ao browser que os dados serão para ser interpretados no formato utf8.

disseram-te também que o problema deverá (muito provavelmente) estar na base de dados, seja no formato das tabelas ou na codificação a usar na ligação. no entanto existe outra muito comum : codificação dos teus ficheiros PHP que também deverão estar no formato utf8.

Edited by HappyHippyHippo
  • Vote 1
IRC : sim, é algo que ainda existe >> #p@p
Posted

esta isso tudo, o problema é que se a tabela fica bem o resto fica mal, se o resto está bem a tabela fica mal

no codigo php se puser "header('Content-Type: text/html; charset=utf-8');" não acontece nada, se puser "header('Content-Type: text/html; charset=iso-8859-1');" fica bem a tabela mas tudo fora dele fica mal

e a base de dados esta toda em utf-8 tanto as tabelas como a db

Posted

esta isso tudo, o problema ...

confirma novamente, e se continuares a dizer que está tudo, confirma novamente.

no codigo php se puser "header('Content-Type: text/html; charset=utf-8');" não acontece nada, se puser "header('Content-Type: text/html; charset=iso-8859-1');" fica bem a tabela mas tudo fora dele fica mal

já te disseram para não mexer ai !!! mete utf8 e prontos !!!

IRC : sim, é algo que ainda existe >> #p@p
Posted

ja pus, e não deu nada, está dificil de compreender?

ja tentei de diferentes maneiras e nunca fica como devia

eu percebo o que me disseram para fazer, mas eu ja fiz e não resultou

Posted (edited)

Para uma melhor percepção:

1. Na tabela, quando inseres os dados via código, é inserido com sucesso sem problemas de charset?

2. Se a resposta à pergunta 1 for Sim significa que o problema está no output do que vêm da base de dados para o ecrã do utilizador.

3. Se a resposta à pergunta 1 for Não significa que o problema está no input do que inseres na base de dados

Em qualquer uma das situações, deves atribuir o charset no HTML (que pelos vistos já tens) bem como o charset no PHP antes da query, que ainda te vi a dizer que já o tinhas feito. E eu recomendei-te o seguinte link: http://pt2.php.net/mysql-set-charset

Sets the default character set for the current connection.

Por outras palavras..

$db = mysql_connect('localhost', 'root', etc..);
mysql_set_charset('utf8', $db);
mysql_query("etc..");

Mas ainda mais importante, no topo da documentação.

Warning

This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQLextension should be used. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include:

Pelo que quando decidires enveredar pela extensão MySQLi ou PDO, o teu código transformar-se-à em:

$db = new mysqli("localhost", "root", etc..);
$db->set_charset("utf8");

Se mesmo assim continuar sem funcionar..

codificação dos teus ficheiros PHP que também deverão estar no formato utf8


Edited by bioshock
Posted

pronto, percebi o que disseste e fiz mas sem sucesso

o que reparei foi que usando a iso-8859-1 o que está dentro da tabela fica conforme deve, mas o que está fora fica mal, enquanto se usar utf-8 o que está fora da tabela fica bem, mas o que está dentro fica mal. consegues saber o porque? eu não percebo.

a base de dados, a tabela estão em utf-8

Posted

o que reparei foi que usando a iso-8859-1 o que está dentro da tabela fica conforme deve, mas o que está fora fica mal, enquanto se usar utf-8 o que está fora da tabela fica bem, mas o que está dentro fica mal. consegues saber o porque? eu não percebo.

já disseste isso três vezes, e que vou dizer novamente mas pela última vez : não toques na tag meta que diz para usar utf8

o problema é que estás sempre a bater na mesma tecla e não referências se já verificaste todas as soluções que te disseram, nomeadamente:

codificação dos teus ficheiros PHP que também deverão estar no formato utf8.

IRC : sim, é algo que ainda existe >> #p@p
Posted

já consegui resolver o problema, obrigado pela ajuda 🙂

usei isto por baixo do código de conexão á base de dados e resolveu o problema:

mysql_set_charset('UTF8', $conexao);
Posted (edited)

pensei o mesmo, ja á 5dias que a soluçao foi dada...

é a vida de quem anda por aqui ...

este é um exemplo claro da razão que tenho deixado de responder a tópicos relacionados com desenvolvimento para a web.

- primeira referência

o problema deverá (muito provavelmente) estar na base de dados, seja no formato das tabelas ou na codificação a usar na ligação

- segunda referência com código de como resolver :

Por outras palavras ...

$db = mysql_connect('localhost', 'root', etc..);
mysql_set_charset('utf8', $db);
mysql_query("etc..");

Edited by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.