lire en iso-8859-1, ecrire en utf-8

Le
Rakotomandimby (R12y) Mihamina
Bonjour,

J'ai un fichier csv encodé en iso-8859-1 qui est en fait "tabulation
separated" que je souhaite insérer dans une base de données mais en
utf-8 (pour les chaines de caractères).

Auriez-vous des pistes pour m'aider dans ce sens, s'il vous plait?
(Tutoriels, Morceaux de code,)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pierre Hanser
Le #17564681
Rakotomandimby (R12y) Mihamina a écrit :
Bonjour,

J'ai un fichier csv encodé en iso-8859-1 qui est en fait "tabulation
separated" que je souhaite insérer dans une base de données mais en
utf-8 (pour les chaines de caractères).

Auriez-vous des pistes pour m'aider dans ce sens, s'il vous plait?
(Tutoriels, Morceaux de code,...)



bonjour
sous linux (au moins), la commande iconv permet de faire les conversions:

Usage : iconv [OPTION...] [FICHIER...]
Convertit l'encodage des fichiers indiqués d'un encodage à l'autre.

Spécification des formats d'entrée/sortie :
-f, --from-code=NOM encodage du texte original
-t, --to-code=NOM encodage de la sortie

c'est un peu méconnu et surtout pas très python...
--
Pierre
Michel Claveau - NoSpam SVP ; merci
Le #17565141
Bonjour !

Traiter directement les strings n'irait pas ?
Comme, par exemple :
pantalon =
maculotte.decode('iso-8859-1','replace').encode('utf-8','replace')
pantalon =
maculotte.decode('latin1','replace').encode('utf-8','replace')
pantalon =
maculotte.decode('latin_1','replace').encode('utf-8','replace')

HS : le choix des noms des variables est lié à l'homonymie/synonymie du
typage (string = ...)

@+
--
Michel Claveau
Stephane Bortzmeyer
Le #17580071
Rakotomandimby (R12y) Mihamina wrote:

J'ai un fichier csv encodé en iso-8859-1 qui est en fait "tabulation
separated" que je souhaite insérer dans une base de données mais en
utf-8 (pour les chaines de caractères).



Vous n'avez pas indiqué le modèle de la base de données. Mais tous les
SGBD sérieux (par contre, je n'ai pas testé avec SQL server ou MySQL..)
acceptent de faire la conversion tous seuls. Par exemple, avec PostgreSQL :

SET client_encoding=latin1;

Et hop, le programme Python n'a plus qu'à envoyer du Latin-1, PostgreSQL
convertira tout seul dans l'encodage de la base.

Détails en http://www.bortzmeyer.org/postgresql-unicode.html
Bruno Desthuilliers
Le #17592341
Rakotomandimby (R12y) Mihamina a écrit :
Bonjour,

J'ai un fichier csv encodé en iso-8859-1 qui est en fait "tabulation
separated" que je souhaite insérer dans une base de données mais en
utf-8 (pour les chaines de caractères).

Auriez-vous des pistes pour m'aider dans ce sens, s'il vous plait?
(Tutoriels, Morceaux de code,...)



Pour ce qui est de l'encodage:
utf_string = iso88591_string.decode('iso-8859-1').encode('utf-8')

Pour ce qui est du format 'tab-separated', c'est géré par le module csv
(si mon souvenir est bon).

Pour ce qui est d'injecter ça dans une base de donnée, tu peux soit
utiliser le connecteur python/db-api qui va bien, soit simplement
générer le SQL. Je suppose bien sûr que tu connais SQL !-)
Publicité
Poster une réponse
Anonyme