Problema com, encoding utf8

Olá Pessoal,
Sei que já devem haver muitos posts desse tipo, mas este eu estou colocando porque tudo o que procurei na web não resolveu!
Seguinte, estou usando PHP 5.3.8 num computador de S.O FreeBSD-8.2-RELEASE, Banco de dados Mysql 5.1
Meu problema com encodings é o seguinte:
Sempre que eu escrevo uma palavra que vem do banco de dados, via echo() os caracteres especiais saem errados.
Significa que, ele funciona quando eu faço

echo('água');

Mas não funciona se eu faço:

 $texto = $array_vindo_mysql_fetch['campo'];
 echo($texto);

Primeiramente pensei que o problema foi do Mysql, então para todas as tabelas eu especifiquei DEFAULT CHARSET e o Collation como UTF-8.
No arquivo PHP eu iniciei com:

header("Content-type: text/html;charset=utf-8");

No HTML eu já inseri a devida tag meta com o charset utf-8.
Salvei todos os meus arquivos em UTF-8 sem BOM.
E minha última esperança era o:

mysql_set_charset("utf-8")

Mas também não resolveu.
Ainda assim eu defini no php.ini o default charset como utf-8 e confirmei isto no phpinfo().
Outro detalhe importante é: as strings realmente parecem estar vindo em UTF-8, vejam só:


 $texto = utf8_decode($array_vindo_mysql_fetch['campo']);
 echo($texto);

Funciona, o que significa que o navegador só está aceitando os textos convertidos para Latin1. Mas por que??
Não quero ter que ficar a todo instante convertendo caracteres, isso não é solução, é contornar o problema.
Estou desesperado, não sei mais o que fazer para resolver isto! Alguém já passou por isto?

Dicas incríveis para carreira de TI

Essas dicas, serão importantíssimas para você que já está na área e principalmente para quem está ingressando agora na área de TI e está se sentindo um pouco perdido em meio a tantos assuntos, tecnologias e cursos.

Leia mais »