Os textos acentuados vindo do banco de dados funcionam bem, mas se eu tiver outros textos acentuados no template ai volta a zuar.
Agora se eu oculto as funções mb ai preciso usar a fução utf8_encode() nas strings vindas do db.
Eu tenho um blog baseado no WordPress e por curiosidade mudei o charset de UTF-8 para ISO-8859-1 e todos os posts anteriores ficaram com o texto zuado. Olhei no banco de dados e o db é Latin, mas os textos aparentemente estão encodados em utf-8. A palavra 'coleção' por exemplo está como 'coleção' no db.
O negócio é projetar seu sistema para um charset só e ponto final. Nem o WordPress tem uma solução mágica para o usuário mudar o charset a qualquer momento e não ter problemas com o texto então nem vou esquentar a cabeça.
Vou continuar usando a função utf8_encode() nas strings.
Mas eu vou ser sincero... ainda não estou satisfeito com esse assunto :[
Em outras palavras, quer dizer que dispensa o uso da função utf8_encode() que eu tenho usado nas strings. É isso mesmo?
Testei estas funções colocando-as no topo do meu .php e funcionou lindamente. Coloquei no local correto?
Um detalhe interessante que achei nestas funções é que variar o charset das páginas fica fácil, basta ocultar ou não estas funções. E isso mantendo meu db em Latin.
obs: repara no comentário da primeira função, se usar a função ele come meus acentos.
Ultimamente eu tenho estado meio paranoico hehehe e indico você também pensar em algum cache para essa imagem dinamica. Imagina sua imagem em 10 fóruns, milhares de pessoas acessando, engines de busca como o google que varre as paginas em uma velocidade incrivel e por ai vai. Cada acesso comendo recursos nas querys do banco de dados isso pode comprometer e muito o desempenho do seu servidor.
Fiz esta resalva porque em passados não muito distantes cansei de sofrer com abuso de banco de dados.