Maison >développement back-end >tutoriel php >Comment convertir correctement les caractères Latin1 en UTF-8 dans une base de données MySQL ?

Comment convertir correctement les caractères Latin1 en UTF-8 dans une base de données MySQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-03 20:22:29450parcourir

How to Correctly Convert Latin1 Characters to UTF-8 in a MySQL Database?

Convertir les caractères Latin1 dans une table UTF-8 en UTF-8

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn