Problemas de Encoding/codificação

joaopj

Power Member
Olá pessoal...

Eu fiz um site todo ele em UTF8 (acho eu :S) e nele eu meti isto no início:

Código:
<?php header('Content-type: text/html; charset=UTF-8'); ?>

e isto dentro da head:
Código:
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />

Todas as páginas são xHTML 1.0 Transictional válidas.


No entanto acontece o seguinte:

Todas as páginas aparecem correctamente no browser (pelo menos para mim :S e até hoje ainda ninguém reclamou...) mas quando eu faço uma simulação de spiders (isto acontece com todos os sites que eu já usei até agora para fazer estas simulações, mas para exprimentarem eu recomendo este: http://tools.seobook.com/general/spider-test/ ), os caracteres que supostamente deviam ter acentos e tils e cedilhas, ficam assim por exemplo:
Código:
João Jerónimo [SIZE=4]em vez[/SIZE] de João Jerónimo
Eu gostaria de ver tudo a aparecer correctamente como acontece com outras páginas em português com UTF-8 (como o google.pt)

Alguém ajuda-me ?

Obrigado
 
Mas tem de ser UTF-8?

Porque nas minhas páginas utilizo ISO-8859-1 , isto porque com UTF-8 as minhas páginas nem sequer passavam no validador da W3C.

Cumprimentos
 
Bom... eu já ouvi dizer em vários sítios que é aconselhavel usar UTF 8... não sei exactamente porquê (ou secalhar não sei) porque ouvi dizer isto há muito tempo...
 
A sério :| ?
Eu por acaso nunca soube que era o oficial português...
Isto vem na wikipedia:

Pode representar qualquer caracter universal padrão do Unicode, sendo também compatível com o ASCII. Por esta razão, está lentamente a ser adoptado como tipo de codificação padrão para email, páginas web, e outros locais onde os caracteres são armazenados.

Vou tentar o ISO-8859-1 (não me lembro se já tentei antes, mas acho que sim.... opah vai denovo lol)
 
UPDATE:

Olha fiz uma página de testes, no ISO-8859-1, e ela está aqui: http://joaojeronimo.4000webs.com/testes.php

Para mim, a página aparece assim:
Código:
 Olá, isto é uma página de testes onde eu quero testar coisas como isto:

 ã á ó ú blá Ã* î â  É tudo, 

Obrigado,  João Jerónimo
e supostamente deveria aparecer assim:
Código:
Olá, isto é uma página de testes onde eu quero testar coisas como isto:

ã á ó ú blá í î â

É tudo, Obrigado,

João Jerónimo

PS: Fazendo uma simulação de spider, a página aparece exactamente como eu a vejo (no primeiro código)
 
Também me aparece assim, como diz.

E unicode não dá?

Todas as minhas páginas iniciam com isto:

<?xml version="1.0" encoding="ISO-8859-1"?>

E acho que funcionam bem para o pessoal.. pelo menos ainda não vi ninguém queixar-se.. por isso pensei que desse.

Cumprimentos
 
UTF 8 é Unicode... isto vem na wikipedia:
UTF-8 (8-bit Unicode Transformation Format) é um tipo de codificação Unicode de comprimento variável criado por Ken Thompson e Rob Pike.

e se eu usar <?xml version="1.0" encoding="ISO-8859-1"?> dentro de files PHP, eu vou ter erros de parsing dos files, então eu acho que o equivalente para PHP é
<?php header('Content-type: text/html; charset=ISO-8859-1'); ?>
que foi o que eu usei no teste.php....
 
A opção que o _lamy_ indicou é boa.. embora se torne um pouco chato fazer isso todo para todos os acentos e tils.

E tinha a ideia que Unicode e UTF-8 eram coisas diferentes, erro meu.

Cumprimentos
 
_lamy_, eu usava antigamente esse metodo, mas depois quando eu vejo o source code das minhas pags elas vão aparecer infestadas dessas.... humm.... entidades ou caracteres especiais lol... e isso vai ser muito prejudicial em termos de SEO porque os keywords vão deixar de ser os mesmos... por exemplo, as pessoas não vão googlar por "Jo&atilde;o" e sim por "João"

O Google.pt tem tudo normal sem caracteres especiais ou lá o que se chamam, e usa UTF-8 e quando eu faço um spider da pag deles, aparece tudo correcto.... É isto que eu quero atingir lool
 
Epá, não sei então... mas, se tiveres "Jo&atilde;o" vai ser interpretado como João e quando alguem for googlar por João vai coincidir, quase de certeza.

O único senão é que dá mto trab tar sempre a por essas tais indentidades.. Lolol
Mas podes fazer sempre um script que dado um documento procure por caracteres especiais e os substitua pela identidade correspondente! :P

Não, querendo usar isto, supostamente deveria funcionar como tavas a fazer... dando o charset...
 
Não, "Jo&atilde;o" = "Jo&atilde;o" e "João" = "João" a nivel de search engines.... Se fores a ver o código HTML por exemplo a partir do firefox ou se fizeres um teste de spider, vais ver "Jo&atilde;o" como meteste no HTML... Eu já fiz esse teste... curiosamente nos resultados, aparece tudo bem...

E no meu editor de texto (o Quanta Plus) dá para fazer um simples Replace que resolve os problemas.... logo eu não teria que andar a substituir cada caracter por uma identidade...
 
Também tenho o mesmo problema. E ainda tenho mais. Leituras de base de dados que supostamente estão em UTF-8 os dados [porque os meti], não são bem lidos e ainda o encoding do próprio ficheiro em utf-8 ou ansi.
 
ou o sistema no qual estão a visualizar a página não suporta iso8858-15/utf-8 (mais utilizados com suporte pt), ou então o output gerado pelo servidor de página não está a ser feito utilizando estes charsets.


O facto de no PHP se incluir um header("charsetblablabla"), estamos apenas a indicar ao browser qual o tipo de caracteres que vão ser enviados. Cabe ao browser, ou ao programa que parsa os dados converter-se.
 
Back
Topo