Rechercher une fonction PHP

Jeux de caractères

Idéalement, un jeu de caractères propre doit être défini au niveau du serveur, opération décrite dans la section » Configuration du jeu de caractères du manuel MySQL Server. Alternativement, chaque API MySQL offre une méthode pour définir le jeu de caractères lors de l'exécution.

Attention

Le jeu de caractères et l'échappement des caractères

Le jeu de caractères doit être compris et défini, sachant qu'il a un effet sur chaque action, et a des implications au niveau de la sécurité. Par exemple, le mécanisme d'échappement (i.e. mysqli_real_escape_string() pour mysqli, mysql_real_escape_string() pour mysql, et PDO::quote() pour PDO_MySQL) va utiliser cette configuration. Il est important de garder en tête que ces fonctions n'utiliseront pas le jeu de caractères défini avec une requête, aussi, l'exemple suivant n'aura aucun effet sur le jeu de caractères :

Exemple #1 Problèmes lors de la définition du jeu de caractères avec SQL

<?php

$mysqli 
= new mysqli("localhost""my_user""my_password""world");

// N'affectera pas $mysqli->real_escape_string();
$mysqli->query("SET NAMES utf8");

// N'affectera pas $mysqli->real_escape_string();
$mysqli->query("SET CHARACTER SET utf8");

// Mais, ceci va affecter $mysqli->real_escape_string();
$mysqli->set_charset('utf8');

?>

Ci-dessous les exemples qui démontrent la façon de modifier proprement le jeu de caractères lors de l'exécution en utilisant chacune des APIs.

Exemple #2 Exemple de définition du jeu de caractères : mysqli

<?php

$mysqli 
= new mysqli("localhost""my_user""my_password""world");

if (!
$mysqli->set_charset('utf8')) {
    
printf("Erreur lors du chargement du jeu de caractères utf8 : %s\n"$mysqli->error);
} else {
    
printf("Jeu de caractères courant : %s\n"$mysqli->character_set_name());
}

print_r$mysqli->get_charset() );

?>

Exemple #3 Exemple de définition du jeu de caractères : pdo_mysql

Note : Ceci ne fonctionnera qu'à partir de PHP 5.3.6.

<?php
$pdo 
= new PDO("mysql:host=localhost;dbname=world;charset=utf8"'my_user''my_pass');
?>

Exemple #4 Exemple de définition du jeu de caractères : mysql

<?php

$conn 
mysql_connect("localhost""my_user""my_pass");
$db   mysql_select_db("world");

if (!
mysql_set_charset('utf8'$conn)) {
    echo 
"Erreur : Impossible de définir le jeu de caractères.\n";
    exit;
}

echo 
'Jeu de caractères courant : ' .  mysql_client_encoding($conn);

?>
Rechercher une fonction PHP

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-mysqlinfo.concepts.charset.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut