Problemas de conjunto de caracteres geralmente são muito difíceis de descobrir. Basicamente, você precisa ter certeza de que todos os itens a seguir são verdadeiros:
- A conexão do banco de dados está usando UTF-8
- As tabelas do banco de dados estão usando UTF-8
- As colunas individuais nas tabelas de banco de dados estão usando UTF-8
- Os dados são realmente armazenados corretamente na codificação UTF-8 dentro do banco de dados (geralmente não é o caso se você importou de fontes ruins ou alterou agrupamentos de tabelas ou colunas)
- A página da web está solicitando UTF-8
- O Apache está servindo UTF-8
Aqui está um bom tutorial sobre como lidar com essa lista, do início ao fim:http:/ /www.bluebox.net/news/2009/07/mysql_encoding/
Parece que seu problema é especificamente que você tem caracteres codificados duplamente (ou codificados triplamente), provavelmente alterando conjuntos de caracteres ou importando dados já codificados com o conjunto de caracteres errado. Há uma seção inteira sobre como corrigir isso no tutorial acima.