Différence d'encodage :
Vous avez découvert un désalignement entre les paramètres d'encodage PHP et MySQL, conduisant à un stockage incorrect des caractères diacritiques dans une table UTF-8. Bien que les nouvelles insertions soient désormais correctes, les anciennes lignes contiennent toujours des caractères corrompus.
Mesure corrective :
Pour corriger ce problème, utilisez la fonction convert() de MySQL :
<code class="sql">convert(cast(convert(name using latin1) as binary) using utf8)</code>
Cette fonction convertit les données codées Latin1 en UTF-8. La double conversion garantit que les données ne sont pas tronquées pendant le processus de conversion.
Exemple d'utilisation :
Dans votre code, appliquez la conversion dans votre requête de mise à jour :
<code class="sql">mysql_iquery('UPDATE `table` SET `name`="'.mysql_real_escape_string(convert(cast(convert(name using latin1) as binary) using utf8)).'" WHERE `a1`="'.$row['a1'].'"');</code>
Cela mettra à jour la colonne de nom de votre table avec l'UTF-8 correctement converti caractères.
Remarque :
En fonction de la modification des données lors de la conversion d'encodage, vous devrez peut-être omettre la fonction de conversion interne de la requête. Testez les deux scénarios et adoptez celui qui donne les résultats souhaités.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!