Lorsque vous vous lancez dans la tâche ardue de conversion d'une base de données de Latin1 vers UTF-8, il est crucial d'évaluer les données. compatibilité. Cet article explore deux méthodes pour détecter les caractères UTF-8 dans les colonnes codées en Latin1.
Option 1 : Perl et MySQL Dump
Extraire des données à l'aide du dump MySQL et les analyser en externe avec Perl peut être une option viable. Les fonctionnalités Unicode de Perl permettent la détection du codage des caractères. Cependant, cette méthode devient lourde pour les grands ensembles de données et est moins efficace que la fonctionnalité intégrée de MySQL.
Option 2 : Fonctions MySQL
MySQL fournit des fonctions qui facilitent l'UTF- Identification de 8 caractères. Plus précisément, les fonctions LENGTH() et CHAR_LENGTH() peuvent être combinées pour identifier les lignes contenant des caractères multi-octets. La requête SELECT nom FROM clients WHERE LENGTH(name) != CHAR_LENGTH(name); isole les lignes contenant des caractères UTF-8 potentiels.
Vérification visuelle
Malgré l'identification des lignes avec des caractères multi-octets, la distinction entre les caractères accentués LATIN1 et les caractères UTF-8 peut être stimulant. Pour obtenir un aperçu définitif, la fonction CONVERT() de MySQL peut être utilisée pour convertir des données binaires en codages Latin1 et UTF-8. Les résultats peuvent être comparés visuellement à l'aide de la requête suivante :
SELECT CONVERT(CONVERT(name USING BINARY) USING latin1) AS latin1, CONVERT(CONVERT(name USING BINARY) USING utf8) AS utf8 FROM users WHERE CONVERT(name USING BINARY) RLIKE CONCAT('[', UNHEX('80'), '-', UNHEX('FF'), ']')
Cette requête cible les lignes contenant des caractères "high-ASCII", qui peuvent indiquer soit des marques d'accent LATIN1, soit des caractères UTF-8. En comparant les conversions Latin1 et UTF-8, le véritable encodage devient évident.
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!