Como converter estas estranhas personagens? (ë, Ã, ì, ù, Ã)

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.

Comentários (5)

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.

Comentários (2)

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  = replace(, "ë", "ë")
update <table> set  = replace(, "Ã", "à")
update <table> set  = replace(, "ì", "ì")
update <table> set  = replace(, "ù", "ù")

Onde <table> é o nome da tabela mysql e `` é 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.*]

Comentários (1)