PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 04/06/2011 14:15:49

YouplaBoom
Membre

Soucis d'encodage...

Bonjour tout le monde,

J'ai un petit problème lourd de conséquences : il m'est impossible d'insérer dans mes tables des caractères accentués via la fonction PHP pg_query().

Le retour de pg_last_error() m'indique :" ERREUR: séquence d'octets invalide pour l'encodage « UTF8 » : 0xe9272c HINT: Cette erreur peut aussi survenir si la séquence d'octets ne correspond pas au jeu de caractères attendu par le serveur, le jeu étant contrôlé par « client_encoding »."
Message d'erreur assez semblable à une discussion dans ce même topic, mais rien n'y fait !

Cependant avec phpPgAdmin et psql, il m'est tout à fait possible d'insérer ces caractères spéciaux...
Donc bon, je ne sais pas si c'est mon code php qui foire, ou le serveur qui pédale.

Je vous remercie d'avance .

Hors ligne

#2 04/06/2011 14:19:28

Marc Cousin
Membre

Re : Soucis d'encodage...

Moi je parie sur le code PHP smile

Bon, trêve de plaisanteries…

- Quel est l'encodage client quand est exécutée la requête ? (afficher dans le code PHP le résultat de la commande SQL 'SHOW client_encoding;'
- Quel est l'encodage du fichier PHP ? (on peut certainement obtenir l'information avec l'éditeur de fichier, mais ça dépend du système d'exploitation et de l'éditeur, évidemment)


Marc.

Hors ligne

#3 04/06/2011 14:24:05

YouplaBoom
Membre

Re : Soucis d'encodage...

Le "SHOW client_encoding;" me retourne UTF8.
Et Geany, mon éditeur, me dit que ma page est encodée en ... UTF8 !

J'avoue ne pas comprendre...

Hors ligne

#4 04/06/2011 14:26:10

Marc Cousin
Membre

Re : Soucis d'encodage...

Moi non plus smile

C'est quoi l'ordre SQL exact ?


Marc.

Hors ligne

#5 04/06/2011 14:29:47

YouplaBoom
Membre

Re : Soucis d'encodage...

C'est un INSERT INTO tout ce qu'il y a de plus banal :

INSERT INTO contact VALUES(
defautl,
'leNomDuContact',
'lePrénomDuContact',
etc...
);

Le problème survient dès que j'essaie d'insérer un Nom ou Prénom avec un caractère accentué, sinon, pas de problème.

Hors ligne

#6 04/06/2011 14:32:47

Marc Cousin
Membre

Re : Soucis d'encodage...

Et le nom et le prénom accentués, ils proviennent d'où ? Est-ce qu'ils sont bien en UTF-8 ?


Marc.

Hors ligne

#7 04/06/2011 14:36:48

YouplaBoom
Membre

Re : Soucis d'encodage...

Ils proviennent d'un formulaire via la méthode POST. L'encodage de ce formulaire est aussi en UTF-8.

Hors ligne

#8 04/06/2011 14:41:18

Marc Cousin
Membre

Re : Soucis d'encodage...

C'est louche. Il faudrait vérifier qu'ils arrivent bien dans le bon encodage. Par ce que la zone E9 en hexa, pour utf8, c'est une zone réservée, il n'y a aucune raison qu'on vous envoie ça en utf8. C'est d'ailleurs pour cela que postgres refuse la donnée.

=> Pouvez-vous vérifier leur encodage ? (en les envoyant dans un fichier, et en faisant 'file' dessus puisque vous semblez être sous Linux)


Marc.

Hors ligne

#9 04/06/2011 15:10:59

YouplaBoom
Membre

Re : Soucis d'encodage...

Bingo !

Les variables ne sont pas encodées en UTF-8.
Je vais juste les ré-encoder avec mb_convert_encoding($maVar, 'UTF-8').

L'insertion fonctionne !

Merci Marc !

Hors ligne

#10 04/06/2011 15:27:44

Marc Cousin
Membre

Re : Soucis d'encodage...

C'est tout de même étrange. Cela laisse supposer que le navigateur ne poste pas des données correctes (pas dans le bon encodage). Il faudrait le résoudre de ce côté là plutôt, non ?


Marc.

Hors ligne

#11 04/06/2011 15:39:30

YouplaBoom
Membre

Re : Soucis d'encodage...

J'utilise Chromium, Google Chrome version libre.
Je me pencherai dessus dès que j'aurais le temps d'assouvir cette curiosité.

En attendant, ça marche et c'est le principal !
Le jury devant lequel je vais passer n'en tiendra sûrement pas compte...

Hors ligne

Pied de page des forums