Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Problema de codificação de caracteres com PHP Simple HTML DOM Parser


@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:
  1. Adicionado header('Content-Type: text/html; charset=utf-8'); no topo do meu arquivo init.php,
  2. Alterado CHARACTER SET do meu campo de tabela de banco de dados que está armazenando esses valores para UTF-8,
  3. Defina o conjunto de caracteres de conexão do MySQL como UTF-8 mysql_set_charset('utf8', $connection_link_id);
  4. 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.
  1. Obter o conjunto de caracteres codificado da fonte $source_charset .
  2. 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.