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

#1 27/10/2010 09:17:00

sbouchard
Membre

phpPgAdmin et encodage des caractères

Bonjour,

J'ai un problème d'encodage des caractères lorsque je lance un script depuis phpPgadmin

Ma configuration :
PostgreSQL 8.4.3 sur Windows Server 2008
Base de données en UTF8
Un client phpPgAdmin 5.0-beta2 (PHP 5.2.8)

Les commandes suivantes exécutées depuis la fenêtre SQL s'exécutent normalement

CREATE TABLE test (c1 INTEGER, c2 VARCHAR(20));
INSERT INTO test VALUES (1, 'été');

le tupe est inséré.

Je lance un script SQL  contenant deux commandes :

INSERT INTO test VALUES (2, 'maison');
INSERT INTO test VALUES (3, 'fête');

Le premier tuple est bien inséré mais pas le second.
Problème d'encodage des caractères.

Voici le message :
INSERT 0 1
data.sql:2: ERROR: invalid byte sequence for encoding "UTF8": 0xea7465
HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".

Le fait que l'encodage soit correct pour les commandes exécutées depuis
la fenêtre SQL mais pas depuis celle permettant de lancer des scripts me semble
bizarre. Je vois que ce ne sont pas les mêmes fichiers php qui sont
sont utilisés et je ne suis pas une spécialiste php...

Savez-vous dans quel fichier php cette configuration doit être faite et comment ?

D'avance merci!

Sylvie

Hors ligne

#2 27/10/2010 15:16:22

Marc Cousin
Membre

Re : phpPgAdmin et encodage des caractères

Bonjour, pouvez vous définir fenêtre SQL et script SQL précisément (je ne connais pas trop phpPgAdmin) ?


Marc.

Hors ligne

#3 27/10/2010 16:18:39

ioguix
Administrateur

Re : phpPgAdmin et encodage des caractères

Bonjour,

Il semble que le fichier que vous utploadez ne soit pas lui même en UTF8.

Vous auriez le même problème avec psql lui même. Il vous faut préciser au début de votre script l'encodage utilisé avec la requête "SET client_encoding TO 'iso8859-1';"

Exemple:

ioguix$ cat /tmp/test.sql
INSERT INTO test VALUES (3, 'fête');

ioguix$ psql pagila
pagila=> \i /tmp/test.sql 
psql:/tmp/test.sql:1: ERROR:  invalid byte sequence for encoding "UTF8": 0xea7465
ASTUCE : This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".

pagila=> SET client_encoding TO 'iso8859-1';
SET

pagila=> \i /tmp/test.sql 
INSERT 0 1

Hors ligne

#4 28/10/2010 07:57:16

sbouchard
Membre

Re : phpPgAdmin et encodage des caractères

Merci pour votre réponse claire et précise.

C'est effectivement la bonne solution!

Je pense que c'est une bonne pratique que je vais adopter .

J'en profite pour signaler que j'apprécie énormément la qualité de vos réponses en général et la rapidité de réaction que vous avez!

Bravo!

Sylvie

Hors ligne

Pied de page des forums