Maison > base de données > tutoriel mysql > 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
Libérer: 2024-11-03 10:29:30
original
335 Les gens l'ont consulté

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")
);
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal