Maison >base de données >tutoriel mysql >Comment puis-je récupérer des caractères Latin1 corrompus dans les tables MySQL UTF8 ?

Comment puis-je récupérer des caractères Latin1 corrompus dans les tables MySQL UTF8 ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-30 14:28:11400parcourir

How Can I Recover Corrupted Latin1 Characters in UTF8 MySQL Tables?

Récupération des caractères Latin1 dans les tables UTF8 : une solution

Comme vous l'avez mentionné, définir le jeu de caractères entre PHP et MySQL garantit de nouvelles insertions sont correctement stockés. Cependant, récupérer d'anciennes données avec des signes diacritiques qui étaient auparavant stockées en tant que Latin1 et corrompues plus tard peut s'avérer difficile.

Pour résoudre ce problème, vous pouvez utiliser la fonction de conversion MySQL :

convert(cast(convert(name using latin1) as binary) using utf8)

Par défaut , cette fonction peut réparer la plupart des données corrompues sans aucune autre modification. Cependant, vous devrez peut-être ajuster la conversion interne en fonction de la façon dont les données ont été modifiées lors de la conversion d'encodage initiale.

Considérez l'exemple suivant :

$result = mysql_iquery('SELECT * FROM `table`');
while ($row = mysql_fetch_assoc($result)) {
    $message = $row['name'];
    $message = convert(cast(convert($message using latin1) as binary) using utf8);
    mysql_iquery('UPDATE `table` SET `name`="'.mysql_real_escape_string($message).'" WHERE `a1`="'.$row['a1'].'"');
}

En utilisant cette fonction, vous devez pouvoir récupérer les signes diacritiques corrompus et mettre à jour correctement les lignes concernées.

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