Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

4 réponses
Avatar
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,...)

4 réponses

Avatar
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
Avatar
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
Avatar
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
Avatar
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 !-)