Um problema difícil de detectar é ocorre quanto o PHP está em UTF-8, o banco, tabelas e campos estão em UTF-8 e os arquivos também estão em UTF-8, e mesmo assim, ocorre problema de charset no conteúdo retornado pelo banco na página HTML gerada.
Uma solução pode ser modificar a inicialização do mysqli, como no código abaixo e forçar o uso de UTF-8.
$conexao = new mysqli("host", "usuario", "senha", "banco"); $conexao->set_charset("utf8");
E pronto! O problema deve estar resolvido
Caso queira converter uma tabela para o UTF8, utilize esta dica.
Caso queira converter um campo para o UTF8, veja como nesta dica.