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
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
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.
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.
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
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");
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");
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!