encoder une base de donnée en utf8

Eléphanteau du PHP | 12 Messages

23 août 2008, 18:00

Bonjour,
Je fais un site et j'ai besoin de l'utf-8 (j'utilise Mysql avec PDO) donc j'ai mis toutes mes pages avec le doctype ci dessous

Code : Tout sélectionner

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Quand j'ai fait ma base de données j'ai mis la base et toutes les tables en utf8 :

Code : Tout sélectionner

CREATE DATABASE nomdelabase DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Code : Tout sélectionner

ENGINE = innodb CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Et malgré tout ça, quand je rentre des accents dans les formulaires : ça foire !
Quand je vais dans phpMyadmin les caractères sont transformés.
ex : Les îles de Barnabé pour : les îles de Barnabé
ça devrait marcher pour : ça devrait marcher.
Il me semblait avoir suivi toutes les recommandations que j'avais trouvées sur le web mais j'ai dû oublier quelque chose.
Merci d'avance

Mammouth du PHP | 19672 Messages

23 août 2008, 19:24

As-tu indiqué l'encodage dans l'en-tête de tes pages HTML ? :-*
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 12 Messages

23 août 2008, 19:57

Oui dans le doctype si c'est ça que tu veux dire.
On m'a conseillé autre chose que je viens d'essayer et qui marche : :P
$connexion->query('SET NAMES utf8');
Je l'ai mis après l'instanciation de mon objet connexion.
Mais je ne comprends pas pourquoi j'ai besoin de faire ça alors que je pensais avoir précisé que toute la chaîne était en utf8.
Et il n'y a pas moyen de faire un truc une bonne fois pour toutes? J'aimerais ne pas avoir besoin de mettre cette ligne après chaque ouverture de connexion, ça doit être possible quand même. :-k

Mammouth du PHP | 2937 Messages

24 août 2008, 00:35

avec le doctype ci dessous

Code : Tout sélectionner

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Ce n'est pas un doctype, mais une balise meta renseignant une métadonnée. Pour info, un doctype ressemble à ça pour la syntaxe et à ça pour le HTML et le XHTML.

Invité
Invité n'ayant pas de compte PHPfrance

25 août 2008, 00:30

Ah je me suis mal exprimée. Je voulais dire dans la balise méta.
Mais sinon pas d'idée sur une autre manière de procéder??
:-s

ViPHP
AB
ViPHP | 5818 Messages

25 août 2008, 12:18

Oui dans le doctype si c'est ça que tu veux dire.
On m'a conseillé autre chose que je viens d'essayer et qui marche : :P
$connexion->query('SET NAMES utf8');
Je l'ai mis après l'instanciation de mon objet connexion.
Mais je ne comprends pas pourquoi j'ai besoin de faire ça alors que je pensais avoir précisé que toute la chaîne était en utf8.
Et il n'y a pas moyen de faire un truc une bonne fois pour toutes? J'aimerais ne pas avoir besoin de mettre cette ligne après chaque ouverture de connexion, ça doit être possible quand même. :-k
Mysql travaille par défaut en iso ISO-8859-1. Pour pouvoir enlever cette ligne il faudrait que tu puisse configurer les réglages par défaut de mysql en utf8.

Eléphanteau du PHP | 12 Messages

01 sept. 2008, 11:49

OK je vois. Ce qui veut dire que ce n'est pas possible chez mon hébergeur je suppose??

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

01 sept. 2008, 13:34

Probablement pas.
Mais quoi qu'il en soit, cette toute petite requête est toujours bienvenue.

Eléphanteau du PHP | 12 Messages

03 sept. 2008, 13:16

Merci tout le monde. Sujet résolu !!!
ElePHPant