IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Problème encodage caractère §


Sujet :

Python

  1. #1
    Membre éprouvé Avatar de olivier1969
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 153
    Par défaut Problème encodage caractère §
    Bonjour,


    Dans un fichier texte je récupère des données que je pousse dans un dictionnaire et certaines lignes ont le caractère § (au dessus du !)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "nom_fichier_communication" = "§REPERTOIRE_IECC§/cftiecc1/data/cftcom"
    La récuperaton et le traitement des données se font correctement, mais quand je print mon dico la ligne ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'nom_fichier_communication': '\xa7REPERTOIRE_IECC\xa7/cftiecc1/data/cftcom'
    Et du coup lors de l'ecriture au format json dans un autre fichier ça plante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UnicodeDecodeError: 'utf8' codec can't decode byte 0xa7 in position 0: invalid start byte
    la partie de code faisant cette opéeration d'ecriture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    with open(f, 'w') as fic:
        json.dump(ini, fic, indent=4)
    fic.close()
    Je me doute bien que c'est un problème d'encodage de caractère (domaine dans lequel je suis nul) , donc si quelqu'un pouvais m'aiguiller vers une solution ça serait avec grand plaisir !!

    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut


    https://docs.python.org/3/library/functions.html#open

    open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None).

    Il faut donner une valeur au paramètre encoding

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 752
    Par défaut
    Salut,

    Citation Envoyé par olivier1969 Voir le message
    Je me doute bien que c'est un problème d'encodage de caractère (domaine dans lequel je suis nul) , donc si quelqu'un pouvais m'aiguiller vers une solution ça serait avec grand plaisir !!
    Apparemment, vous êtes encore sous Python2...
    Si c'est le cas, une mise à jour serait un bon début.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre éprouvé Avatar de olivier1969
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 153
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Apparemment, vous êtes encore sous Python2...
    Si c'est le cas, une mise à jour serait un bon début.

    - W
    J'aimerai bien , mais je ne suis pas admin du serveur qui n'a malheureusement que python 2.7 !!! Et ce n'est pas prêt de changer ... Donc je fait avec.

    Ceci dit j'ai modifier mon code qui ne plante plus :

    pour l'ouverture de fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    with codecs.open(file , encoding="latin-1") as fichier :

    pour chaque ligne :
    ce qui fait que dans mon dico j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'nom_fichier_communication': '\xc2\xa7REPERTOIRE_IECC\xc2\xa7/cftiecc1/data/cftcom',
    et dans mon json après écriture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "nom_fichier_communication": "\u00a7REPERTOIRE_IECC\u00a7/cftiecc1/data/cftcom",
    je n'ai plus mon caractère '§' que j'aimerai bien voir à la place de '\u00a7'

  5. #5
    Membre éprouvé Avatar de olivier1969
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 153
    Par défaut
    Je me suis prit la tète toute la matinée pour pas grand chose.
    Au final j'ai résolu mon problème en mettant un '$' à la place des '§' dans les json; pour mes traitements à venir ça ne changera rien .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Problème encodage caractère
    Par Daviloppeur dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/02/2010, 09h28
  2. Problème encodage caractères sépeciaux - XML - Java - Tomcat
    Par commande dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 19/08/2009, 12h31
  3. Problème encodage caractère euro
    Par nuotiz dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 29/05/2007, 22h06
  4. Probléme encodage caractéres spéciaux MYSQL
    Par FoxLeRenard dans le forum Installation
    Réponses: 1
    Dernier message: 20/02/2006, 12h10
  5. Réponses: 1
    Dernier message: 02/02/2006, 23h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo