Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL > Débuter
Débuter Forum d'entraide : Débuter en base de données avec PostgreSQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/07/2011, 15h17   #1
Invité de passage
 
Homme Pierre
Étudiant
Inscription : juillet 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2011
Messages : 7
Points : 1
Points : 1
Par défaut Problème de jeu de caractères lors d'un import de fichier .txt

Bonjour à tous et à toutes ,

pour mon projet de stage, je dois gérer une grande quantité de bases de données et pour cela les importer dans PostGre avec COPY mais lors de l'import de données, survient un problème d'encodage de caractères dont voici le message d'erreur :

"ERREUR: séquence d'octets invalide pour l'encodage « UTF8 » : 0xff
ASTUCE : 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 »."

Je pense que cela vient principalement des accents sur les e (é, è etc ...) et autres caracteres du genre.
Après quelques recherches diverses, j'ai vu qu'il fallait changer le client_encoding en écrivant "\encoding LATIN1". Cela ne marchant pas, j'ai testé l'autre solution qui devait régler tout ça en tapant : "SET client_encoding TO 'WIN1252';".

Là encore, j'obtient un message d'erreur
Citation:
"ERREUR: s�quence d'octets invalide pour l'encodage � WIN1252 � : 0x00
ASTUCE : 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 �."
Je n'ai pas trouvé d'autres solutions pour ce problème alors peut-on, si quelqu'un sait, importer cette base sans supprimer les accents ou en les remplaçant par des e tout simples?

D'avance merci !
Pitiwal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 18h43   #2
Modérateur
 
Inscription : octobre 2008
Messages : 1 508
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 508
Points : 2 040
Points : 2 040
Dans un fichier texte normal, il n'y a pas de caractère 0x00.
Sinon l'instruction SET client_encoding TO encodage_du_fichier est la bonne méthode.
Mais ça ne peut marcher que si le fichier est propre et que tout le contenu a le même encodage. Si ce n'est pas le cas il n'y a pas tellement d'autre solution que de nettoyer le contenu avant import.
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 09h59   #3
Invité de passage
 
Homme Pierre
Étudiant
Inscription : juillet 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2011
Messages : 7
Points : 1
Points : 1
Bonjour à nouveau ,

quand j'ouvre mon fichier, je peux sélectionner son encodage et je choisis 'Unicode' car c'est sous ce format que mon tableau est propre et correct. Seulement quand avec PostGre, je change avec la commande SET client_encoding TO 'Unicode', il me sort toujours UTF-8 quand je tape \encoding; et refuse l'importation.

Je dois changer son encodage et le nettoyer donc pour pouvoir l'importer convenablement?
Pitiwal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 10h50   #4
Modérateur
 
Inscription : octobre 2008
Messages : 1 508
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 508
Points : 2 040
Points : 2 040
Dans le contexte de postgresql, UTF8 et UNICODE sont des termes synonymes, le fait qu'il réponde UTF8 quand on lui dit UNICODE n'a pas d'importance.

D'après ce message d'erreur cité dans la discussion:
Citation:
"ERREUR: séquence d'octets invalide pour l'encodage « UTF8 » : 0xff
on peut soupçonner que le problème est dû à la présence d'un BOM en début de fichier.

Le fichier est peut-être en UTF16 avec BOM ou UTF8 avec BOM. Pour l'importer dans postgresql il faudrait qu'il soit UTF8 sans BOM.
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 12h29   #5
Invité de passage
 
Homme Pierre
Étudiant
Inscription : juillet 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2011
Messages : 7
Points : 1
Points : 1
J'ai réussi

Merci quand même pour vos explications mais j'ai passé mon fichier en CSV et l'import a été plus simple même si j'ai dû pour cela créer une table ainsi que rentrer à la main une à une les colonnes de ma table.

Merci encore parce que c'est toujours ça d'appris sur le sujet =]
Pitiwal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 12h42   #6
Membre Expert
 
Avatar de kdmbella
 
Homme Demazy Mbella
Développeur Web
Inscription : août 2010
Messages : 620
Détails du profil
Informations personnelles :
Nom : Homme Demazy Mbella
Localisation : Cameroun

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : août 2010
Messages : 620
Points : 1 470
Points : 1 470
ça ne résout pas vraiment ton problème car t'as fait des chose une par une.
A mon avis tu devrais à l'aide d'un éditeur comme Notepad ++ passer tout ton fichier txt en UTF8-sans Bom et essayer de vérifier s'il apparaît des caractères indésirables. Si oui, tu les corrige pour avoir un texte correct et ensuite tu l'importes !
__________________
Trois personnes peuvent garder un secret si deux d'entre elles sont mortes. :Benjamin Franklin
L'humanité se divise en trois catégories : ceux qui ne peuvent pas bouger, ceux qui peuvent bouger, et ceux qui bougent : Benjamin Franklin
Le hasard, c'est le déguisement que prend Dieu pour voyager incognito: Albert Einstein
bon je m'arrête là au risque de me faire buter
kdmbella est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h21.


 
 
 
 
Partenaires

Hébergement Web