A minha página mostra frequentemente coisas como ë, Ã, ì, ù, à no lugar de caracteres normais.
Utilizo utf8 para página de cabeçalho e codificação MySQL. Como é que isto acontece?
Estes são caracteres codificados em utf-8. Utilizar utf8_decode() para os converter para caracteres normais ISO-8859-1.
Se vir esses caracteres, provavelmente não especificar correctamente a codificação dos caracteres. Porque esses caracteres são o resultado quando uma cadeia de caracteres multi-byte UTF-8 é interpretada com uma codificação de byte único como ISO 8859-1 ou Windows-1252.
Neste caso ë
poderia ser codificado com 0xC3 0xAB que representa o carácter Unicode ë
(U+00EB) em UTF-8.
Embora o utf8_decode
seja uma solução útil, prefiro corrigir os erros de codificação na própria mesa. Na minha opinião, é melhor corrigir os maus caracteres em si do que fazer "hacks" no código. Basta fazer um **replace
*** no campo sobre a mesa. Para corrigir os caracteres mal codificados de OP:
update <table> set <field> = replace(<field>, "ë", "ë")
update <table> set <field> = replace(<field>, "Ã", "à")
update <table> set <field> = replace(<field>, "ì", "ì")
update <table> set <field> = replace(<field>, "ù", "ù")
Onde <table>
é o nome da tabela mysql e <field>
é o nome da coluna na tabela. Aqui está uma lista de verificação muito boa para os caracteres tipicamente mal codificados do windows-1252 a utf-8 -> Debugging Chart Mapping Windows-1252 Characters to UTF-8 Bytes to Latin-1 Characters.
**Lembre-se de fazer backup da sua mesa antes de tentar substituir quaisquer caracteres por SQL***!
[Sei que esta é uma resposta a uma pergunta muito antiga, mas estava de novo a enfrentar a questão. Algumas máquinas de janelas antigas não codificaram o texto correcto antes de o inserir na tabela utf8_general_ci colada.*]