@deceze e @Shakti obrigado pela ajuda.
+1 para o link do artigo postado por deceze (Manuseando Unicode de frente para trás em um aplicativo da Web ) e também vale a pena ler Compreendendo a codificação
Depois de ler seus comentários, responder e, claro, esses dois artigos, finalmente resolvi meu problema.
Listei as etapas que fiz até agora para resolver esse problema:
- Adicionado
header('Content-Type: text/html; charset=utf-8');
no topo do meu arquivo init.php, - Alterado CHARACTER SET do meu campo de tabela de banco de dados que está armazenando esses valores para UTF-8,
- Defina o conjunto de caracteres de conexão do MySQL como UTF-8
mysql_set_charset('utf8', $connection_link_id);
- Utilizou a função htmlentities() para converter caracteres
$meta_title = htmlentities(trim($meta_title_raw), ENT_QUOTES, 'UTF-8');
Agora o problema parece estar resolvido, MAS ainda tenho que fazer o seguinte para resolver esse problema COMPLETO.
- Obter o conjunto de caracteres codificado da fonte
$source_charset
. - Altere a codificação da string para UTF-8 se ela já não estiver na mesma codificação. Para isso, a única função PHP disponível é
iconv()
. Exemplo:iconv($source_charset, "UTF-8", $meta_title_raw);
Para obter
$source_charset
Eu provavelmente tenho que usar alguns truques ou verificação múltipla. Como verificar cabeçalhos e metatag etc. Encontrei uma boa resposta em Detectar codificação
Deixe-me saber se há alguma melhoria ou qualquer falha nas minhas etapas acima.