Problèmes d'encodage UTF-8 avec PDO et MySQL
Lors de l'utilisation de la bibliothèque PHP Data Objects (PDO) avec une base de données MySQL, vous pouvez rencontrez des problèmes avec l’encodage UTF-8. Les données insérées dans la base de données en UTF-8 peuvent apparaître sous forme de caractères corrompus, tels que "?????????".
Pour résoudre ce problème, en suivant les instructions de votre framework, exécutez les requêtes " SET NAMES utf8" et "SET CHARACTER SET utf8" après avoir établi la connexion PDO. Toutefois, si ces requêtes ne résolvent pas le problème, envisagez la solution de contournement suivante :
Solution de contournement :
Convertissez les données en une chaîne codée en JSON avant de l'insérer dans le base de données à l'aide de la fonction json_encode. Récupérez les données à l'aide de json_decode après les avoir récupérées de la base de données. Cette approche devrait résoudre le problème d'encodage.
Approche optimisée :
Pour les versions PHP 5.3.5 et antérieures, vous pouvez définir le jeu de caractères UTF-8 lors de l'initialisation de la connexion. . Ceci peut être réalisé avec le code suivant :
$pdo = new PDO( 'mysql:host=hostname;dbname=defaultDbName', 'username', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") );
Cela garantit que l'encodage UTF-8 est forcé sur la connexion PDO, résolvant ainsi le problème d'encodage UTF-8 défectueux.
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!