Maison  >  Article  >  base de données  >  Comment résoudre les problèmes d’encodage UTF-8 avec PDO et MySQL ?

Comment résoudre les problèmes d’encodage UTF-8 avec PDO et MySQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-03 10:29:30248parcourir

How to Solve UTF-8 Encoding Issues with PDO and MySQL?

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!

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