Maison >base de données >tutoriel mysql >Comment puis-je convertir correctement les caractères Latin1 d'une table MySQL UTF8 en UTF8 ?

Comment puis-je convertir correctement les caractères Latin1 d'une table MySQL UTF8 en UTF8 ?

DDD
DDDoriginal
2024-12-09 04:29:09782parcourir

How Can I Correctly Convert Latin1 Characters in a UTF8 MySQL Table to UTF8?

Convertir les caractères Latin1 d'une table UTF8 en UTF8

Vous avez rencontré un problème où les caractères avec des signes diacritiques (par exemple, "Jáuò Iñe" ) ont été incorrectement stockés dans une table UTF8 en raison d'un "mysql_set_charset('utf8')" manquant call.

Pour résoudre ce problème, vous essayez de convertir les lignes concernées à l'aide de "mb_convert_encoding" et "iconv." Cependant, ces méthodes ne parviennent pas à capturer les caractères au-delà du premier caractère « illégal » (représenté par « ă » dans l'exemple).

L'approche recommandée pour corriger les données consiste à utiliser la fonction MySQL :

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

Explication :

  1. Le converti extérieur La fonction convertit les données de sa représentation binaire actuelle en chaîne à l'aide du jeu de caractères UTF-8.
  2. La fonction de conversion inner convertit les données de sa représentation Latin-1 d'origine en une représentation binaire .
  3. La fonction cast garantit que la conversion interne renvoie une valeur binaire.

Dans certains cas, la conversion interne peut ne pas être nécessaire, car les données peuvent déjà être stockées dans un format binaire adapté à la conversion en UTF-8. Tester les deux options devrait déterminer l’approche correcte pour votre situation.

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