Maison >développement back-end >tutoriel php >Comment spécifier des jeux de caractères lors de la connexion à MySQL à l'aide du PDO de PHP ?

Comment spécifier des jeux de caractères lors de la connexion à MySQL à l'aide du PDO de PHP ?

DDD
DDDoriginal
2025-01-01 13:31:11496parcourir

How Do I Specify Character Sets When Connecting to MySQL Using PHP's PDO?

Transmission des informations sur le jeu de caractères aux connexions PDO

Lorsque vous travaillez avec des connexions MySQL via la bibliothèque PDO (PHP Data Objects) de PHP, il est important de vous assurer que les informations sur le jeu de caractères sont correctement traitées pour permettre une gestion et un affichage corrects des données. Les versions précédentes de l'extension mysql_* proposaient deux manières courantes de spécifier les jeux de caractères : mysql_set_charset() et mysql_query("SET NAMES 'UTF8'").

Avec PDO, la spécification du jeu de caractères est gérée différemment. Deux méthodes sont disponibles :

  1. Utiliser une option DSN de jeu de caractères :

    • Inclure l'option charset dans votre connexion PDO chaîne pour spécifier le jeu de caractères. Par exemple :

      $connect = new PDO("mysql:host=$host;dbname=$db;charset=utf8mb4", $user, $pass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
  2. Utilisez la méthode exec() (pour les versions PHP antérieures à 5.3.6) :

    • Dans les versions PHP antérieures à 5.3.6, vous pouvez définir le jeu de caractères à l'aide de la méthode exec() après avoir établi le Connexion PDO :

      $dbh = new PDO("mysql:host=$host;dbname=$db",  $user, $password);
      $dbh->exec("set names utf8mb4");

Il est important de noter que, par défaut, PDO ne définit pas automatiquement le jeu de caractères. Par conséquent, il est recommandé de toujours spécifier le jeu de caractères en utilisant l'une des méthodes décrites ci-dessus pour garantir que les données sont traitées et affichées correctement.

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