Probleme d'encodage de caractere

Probleme d'encodage de caractere - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 13-05-2007 à 23:12:00    

Bonjour,  
je suis sous mac os, j'ai postgreSQL version 8.2.3 et je souhaite recréer une base à partir d’un dump.
Le problème c'est que quand je lance ma commande psql -e {nom_de_la_base} < {nom_du_fichier.dump}, j'ai cette erreur qui revient : "ERROR : invalid byte sequence for encoding "UTF8" 0x92etc...".
Mon fichier dump vient d'un system unix, quand je le lis avec vi, je voit des ? à la place des é par exemple.
Je peux très bien me passer des caractères à problème, je peux donc les supprimer. Mais comment?
Mon fichier fait 800Mo, je n'arrive pas à l'ouvrir avec un editeur de texte car ça demande trop de ressource.  
J'ai deux "solutions" :  
1) - une commande unix permettant de remplacer tous ces caractères. J'ai essayé avec un  
sed -e "s/?/e/g" monFichier
et
sed -i.orig "s/?/e/g" monFichier
sans succès.
2) - changer l'encodage au niveau de postgresql. Pour l'instant j'ai fait un /usr/local/bin/initdb -E UTF8 -D /usr/local/pgsql/data .
 
Quelqu'un a-t-il une solution à me proposer?
 
D'avance merci.

Reply

Marsh Posté le 13-05-2007 à 23:12:00   

Reply

Marsh Posté le 14-05-2007 à 08:46:33    

1- Le coup des ? dans vi c'est que la locale utilisée au niveau de ton serveur n'est pas de l'UTF-8
Je te conseille donc de la changer ( locale pour voir la locale courante, setlocale pour la changer )
 
2- Réencoder ton dump : iconv
( iconv -f ISO-8859-1 -t UTF-8 fichier.dump pour un fichier exporté depuis une base en ISO-8859-1 / Latin1 vers UTF-8 )

Reply

Marsh Posté le 14-05-2007 à 19:19:48    

Merci, j'ai utilisé la commande iconv ainsi :
 
iconv -f ISO-8859-1 -t UTF-8 fichier.dump
 
mon fichier possède toujours quelques caractères "bizarres" quand je faire un vi en ligne de commandes mais postgres ne me génère plus de messages d'erreurs donc ça me convient.

Reply

Marsh Posté le 15-05-2007 à 08:33:56    

pour vi, cf mon 1- ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed