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 :

Changer le codage d'une chaine


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut Changer le codage d'une chaine
    Bonjour à tous,

    Je rencontre un petit problème lors de l'importation de données provenant d'un fichier xls.
    A certains moments l'erreur suivantes se produit:
    UnicodeEncodeError: 'ascii' codec can't encode character u'\x85' in position 8: ordinal not in range(128)
    J'aimerai lorsque cette erreur se produit, pouvoir remplacer le caractère qui gêne, ou mieux changer le codage pour que celui-ci apparaisse.

    Pour info au début de mon script j'ai:
    J'ai essayé de remplacé ceci par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #-*- coding:latin-1 -*-
    mais ça ne change rien.

    J'ai aussi trouvé cet exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    phrase1 = phrase1.encode("iso885915","replace")
    mais rien de concluant.

    Quelqu'un peut-il m'aider?

    D'avance merci
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Par défaut
    As tu essayé avec phrase1 = phrase1.encode('cp1252')?

  3. #3
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par nyko77 Voir le message
    As tu essayé avec phrase1 = phrase1.encode('cp1252')?
    Même problème...

    Voici l'erreur que cela m'affiche:
    UnicodeEncodeError: 'charmap' codec can't encode character u'\x85' in position 8: character maps to <undefined>
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  4. #4
    Membre expérimenté
    Avatar de Alain_72
    Inscrit en
    Août 2004
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 180
    Par défaut
    Ta chaîne de caractère sous excel est vraisemblablement encodée avec le codec spécifique à win32 qui est cp1252.

    Pour la récupérer il faut donc la décoder :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine_decodee = phrase1.decode("cp1252")
    Tu obtiens alors une chaîne unicode que tu peux réencoder dans le codec de ton choix (par exemple utf-8) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine_codee = chaine_decodee.encode("utf-8")

  5. #5
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par Alain_72 Voir le message
    Ta chaîne de caractère sous excel est vraisemblablement encodée avec le codec spécifique à win32 qui est cp1252.

    Pour la récupérer il faut donc la décoder :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine_decodee = phrase1.decode("cp1252")
    Tu obtiens alors une chaîne unicode que tu peux réencoder dans le codec de ton choix (par exemple utf-8) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine_codee = chaine_decodee.encode("utf-8")
    Désolé mais ça ne marche pas mieux, par contre j'aurais pu vous dire sur quel caractère est le problème (désolé de pas y avoir pensé plus tôt, mais je suis pas au meilleur de ma forme).

    Le fichier excel sur lequel je travaille est issu d'un fichier article d'un logiciel professionnel. Lors de l'importation tous les caractères accentués sont remplacés par un carré (si on regarde dans la barre d'édition d'excel).

    J'espère que cela vous permettra de m'aider
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  6. #6
    Membre expérimenté
    Avatar de Alain_72
    Inscrit en
    Août 2004
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 180
    Par défaut
    Citation Envoyé par Jiyuu Voir le message
    Désolé mais ça ne marche pas mieux, par contre j'aurais pu vous dire sur quel caractère est le problème (désolé de pas y avoir pensé plus tôt, mais je suis pas au meilleur de ma forme).

    Le fichier excel sur lequel je travaille est issu d'un fichier article d'un logiciel professionnel. Lors de l'importation tous les caractères accentués sont remplacés par un carré (si on regarde dans la barre d'édition d'excel).

    J'espère que cela vous permettra de m'aider
    L'encodage de la chaîne est donc indéfini.
    Dans ces conditions la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine = phrase1.decode("utf-8", "replace")
    devrait pouvoir te permettre de récupérer ta chaîne sans erreur mais avec des points d'interrogation en lieu et place des caractères qui ne peuvent pas être interprétés.

Discussions similaires

  1. Changer la casse d'une chaine de caractères
    Par dbugfree dans le forum ANT
    Réponses: 0
    Dernier message: 22/10/2008, 14h07
  2. changer le style pour une chaine?
    Par nicekiller dans le forum C#
    Réponses: 11
    Dernier message: 23/06/2008, 06h47
  3. Changer le codage d'une base de données?
    Par sofien dans le forum Administration
    Réponses: 12
    Dernier message: 12/12/2007, 18h03
  4. changer des nombres dans une chaine
    Par newbiegeek dans le forum ASP
    Réponses: 11
    Dernier message: 09/08/2007, 15h24
  5. Changer un char dans une chaine
    Par Calaz dans le forum C
    Réponses: 10
    Dernier message: 07/10/2005, 13h32

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