Convertir les caractères latin1 d'une table UTF8 en UTF8
Vous avez remarqué que vous avez manqué d'insérer mysql_set_charset('utf8') dans vos scripts PHP , et maintenant toutes les tables sont dans le classement utf8_unicode_ci, ce qui fait que l'insertion de caractères avec des signes diacritiques ne se comporte pas correctement.
Auparavant, chaque fois que vous essayiez d'insérer quelque chose avec des signes diacritiques, les données ne s'affichaient pas correctement en raison de la non-concordance. dans les jeux de caractères. Cependant, après avoir corrigé le jeu de caractères entre PHP et MySQL, les nouvelles insertions sont désormais stockées correctement.
L'étape suivante consiste à corriger toutes les anciennes lignes qui sont encore gâchées. Vous avez essayé d'utiliser mb_convert_encoding et iconv, mais les chaînes sont tronquées après un certain caractère.
Pour récupérer les données, vous pouvez utiliser une fonction MySQL comme :
convert(cast(convert(name using latin1) as binary) using utf8)
Selon la façon dont les données ont été modifiées lors de la conversion d'encodage, vous devrez peut-être omettre la conversion interne. Cette fonction convertira les données du Latin-1 en binaire puis en UTF-8, garantissant que tous les caractères s'affichent correctement.
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!