Correction des caractères Latin1 stockés au format UTF8 dans une table MySQL
Votre problème provient d'une conversion incorrecte des données Latin1 en UTF8 lors de l'insertion. Malgré la définition des jeux de caractères corrects, les anciennes données restent corrompues par des caractères incorrects. Pour remédier à cette situation, nous devons convertir les données concernées dans la représentation UTF8 correcte.
La solution recommandée implique d'utiliser la fonction MySQL :
convert(cast(convert(name using latin1) as binary) using utf8)
Cette fonction prend les données de la colonne de nom, l'interprète comme binaire Latin1, puis le convertit en UTF8. La conversion externe en binaire garantit que les données sont traitées comme des données brutes, empêchant ainsi d'autres conversions de jeux de caractères de les corrompre.
Voici un exemple de requête :
UPDATE `table` SET `name` = convert(cast(convert(name using latin1) as binary) using utf8) WHERE `name` LIKE '%[non-UTF8 characters]%'
Cette requête met à jour toutes les lignes avec des valeurs non -Caractères UTF8 dans la colonne de nom, garantissant que les données sont converties correctement.
Remarque : Si le processus d'encodage d'origine Si vous avez légèrement modifié les données, vous devrez peut-être omettre la conversion interne en binaire Latin1 dans l'appel de la fonction de conversion.
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!