Maison >développement back-end >Problème PHP >Comment résoudre le problème des caractères tronqués lorsque PHP lit les données de la base de données

Comment résoudre le problème des caractères tronqués lorsque PHP lit les données de la base de données

PHPz
PHPzoriginal
2023-04-03 19:20:471243parcourir

Lors de l'écriture d'un site Web ou d'une application utilisant PHP, des caractères parfois tronqués apparaissent lors de la lecture des données de la base de données. C’est un problème très courant, mais très ennuyeux. Dans cet article, nous explorerons les causes des données tronquées lors de la lecture des données de la base de données en PHP et comment y remédier.

Cause des caractères tronqués

  1. Le jeu de caractères de la base de données est incohérent avec l'application

Lors du transfert de données entre l'application et la base de données, si elles utilisent des jeux de caractères différents, les données seront tronquées. Par exemple, si la base de données utilise le jeu de caractères UTF-8 et que l'application utilise le jeu de caractères ISO-8859-1, les données obtenues à partir de la base de données seront tronquées.

  1. Le jeu de caractères de connexion à la base de données n'est pas défini

Si le jeu de caractères de connexion à la base de données n'est pas défini, le jeu de caractères du serveur sera utilisé par défaut. Si le jeu de caractères du serveur n'est pas cohérent avec celui de la base de données, des caractères tronqués apparaîtront lors de la transmission des données.

  1. Confusion des jeux de caractères dans la base de données

Parfois, les données enregistrées dans la base de données peuvent être des jeux de caractères mixtes, par exemple contenir des caractères codés UTF-8 et GBK dans le même champ. Dans ce cas, des caractères tronqués apparaîtront lors de la lecture des données.

Solution

  1. Assurez-vous que le jeu de caractères de la base de données et celui de l'application sont cohérents et définissez-les sur le même jeu de caractères.

Dans MySQL, vous pouvez modifier le jeu de caractères de la base de données à l'aide de la commande suivante :

ALTER DATABASE database_name DEFAULT CHARACTER SET utf8;

Pour les applications, vous pouvez définir le jeu de caractères sur UTF-8 en PHP à l'aide de la commande suivante :

mysqli_set_charset($link, "utf8");
  1. Définissez le jeu de caractères lorsque se connecter à la base de données, en garantissant que les données transmises entre eux utilisent le même jeu de caractères.

Dans MySQL, vous pouvez définir le jeu de caractères lors de la connexion à la base de données :

$link = mysqli_connect("localhost", "user", "password", "dbname");
mysqli_set_charset($link, "utf8");
  1. Nettoyez les données de la base de données, assurez-vous qu'elles utilisent le même jeu de caractères et convertissez-les toutes en UTF-8.

Les données dans MySQL peuvent être converties en UTF-8 à l'aide de la commande suivante :

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

Alternativement, le texte peut être converti en UTF-8 en PHP à l'aide du code suivant :

$data = mb_convert_encoding($data, "UTF-8", "auto");

Conclusion

Pour PHP à partir de la base de données Le problème de lecture de données tronquées peut être dû à des jeux de caractères incohérents lors de la transmission des données, au jeu de caractères de connexion à la base de données n'est pas défini ou au jeu de caractères dans la base de données prête à confusion. Pour éviter ces problèmes, vous pouvez définir la base de données et l'application sur le même jeu de caractères, et définir le jeu de caractères lors de la connexion à la base de données. Si des caractères tronqués apparaissent toujours, vous pouvez essayer de nettoyer les données de la base de données et de tout convertir en UTF-8.

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