Mysql
 sql >> Base de données >  >> RDS >> Mysql

Problème d'encodage de caractères avec PHP Simple HTML DOM Parser

@deceze et @Shakti merci pour votre aide.

+1 pour le lien de l'article posté par deceze (Gestion d'Unicode d'avant en arrière dans une application Web ) et cela vaut également la peine de lire Comprendre l'encodage

Après avoir lu vos commentaires, vos réponses et bien sûr ces deux articles, j'ai finalement résolu mon problème.

J'ai répertorié les étapes que j'ai suivies jusqu'à présent pour résoudre ce problème :

  1. Ajout de header('Content-Type: text/html; charset=utf-8'); en haut de mon fichier init.php,
  2. Modification du CHARACTER SET de mon champ de table de base de données qui stocke ces valeurs en UTF-8,
  3. Définir le jeu de caractères de connexion MySQL sur UTF-8 mysql_set_charset('utf8', $connection_link_id);
  4. Utilisation de la fonction htmlentities() pour convertir les caractères $meta_title = htmlentities(trim($meta_title_raw), ENT_QUOTES, 'UTF-8');

Maintenant, le problème semble être résolu, MAIS je dois encore faire ce qui suit pour résoudre ce problème en COMPLET.

  1. Obtenir le jeu de caractères encodé à partir de la source $source_charset .
  2. Changez l'encodage de la chaîne en UTF-8 s'il n'est déjà pas dans le même encodage. Pour cela la seule fonction PHP disponible est iconv() . Exemple :iconv($source_charset, "UTF-8", $meta_title_raw);

Pour obtenir $source_charset Je dois probablement utiliser quelques astuces ou plusieurs vérifications. Comme vérifier les en-têtes et les balises méta, etc. J'ai trouvé une bonne réponse sur Détecter l'encodage

Faites-moi savoir s'il y a des améliorations ou des défauts sur mes étapes ci-dessus.