Correction des caractères UTF8 doublement codés dans une table UTF-8
Une opération d'importation précédente utilisant LOAD DATA INFILE supposait à tort que le CSV d'entrée le fichier était codé en Latin1. Cela a conduit à ce que les caractères multi-octets soient divisés en deux caractères à un octet, puis codés deux fois en UTF-8, créant des anomalies telles que « ñ » au lieu de « ñ ».
Pour rectifier ces chaînes mal codées, MySQL fournit une solution en utilisant la fonction CONVERT() :
CONVERT(CAST(CONVERT(field USING latin1) AS BINARY) USING utf8)
Cette fonction prend le champ à double encodage et le convertit séquentiellement de Latin1 (en supposant l'encodage du fichier d'origine) en représentation binaire et enfin en UTF-8, annulant efficacement le double encodage.
Pour appliquer cette correction, une instruction UPDATE peut être exécutée :
UPDATE tablename SET field = CONVERT(CAST(CONVERT(field USING latin1) AS BINARY) USING utf8);
Cette instruction remplacera les valeurs de champ existantes par celles corrigées, restaurant ainsi l'UTF prévu -8 représentation des caractères multi-octets.
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!