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,...)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pierre Hanser
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
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
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
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
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 = ...)
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
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
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
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
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 !-)
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 !-)
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 !-)