Comme du code vaut souvent mieux qu'un long discours, voici ce qui me pose problème :
1 2 3 4
| $this->conn = mysql_connect($host,$user,$passwd) or txt_log('Impossible de se connecter a la bdd : '.mysql_error($this->conn),'sql.txt');
mysql_set_charset('utf8',$this->conn);
$this->query("SET NAMES 'utf8'");
mysql_select_db($db_name,$this->conn) or txt_log('Impossible de se connecter a la bdd : '.mysql_error($this->conn),'sql.txt'); |
1 2 3 4 5 6
| function &query($sql){
$this->nbQuery++;
txt_log(mb_detect_encoding($sql.'a').' '.$this->nbQuery.' => '.$sql,'sql.txt');
$this->result = mysql_query($sql,$this->conn) or txt_log($this->nbQuery." $sql : ".mysql_error($this->conn),'sql.txt');
return $this->result;
} |
Tout ceci est donc supposé fonctionner en utf-8 . J'essaye de faire passer la requete suivante dans ce bazard :
replace into user(id,login,pass,nom,prenom,addr,tel,cp,ipInscr,mail,etat,dateInscr) values(21,'login','729f2d8b3d3d9bc07ba349faab7fdf44','nom','prénom','','0500000000','10000','127.0.0.1','email@email.com',0,1215611253)
Tous les champs de la table user sont configurés pour utiliser utf-8 ainsi que la table elle même. Or, dans le cas suivant, le champ prénom vaut 'pr' après l'exécution de la requête. Aucune erreur n'est levée. Le log indique bien que la chaine $sql est une utf-8 . Bref, je cale totalement !
Comment utiliser utf-8 avec php et mysql de façon efficace ?
Partager