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 :

[codage ascii] "°"


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut [codage ascii] "°"
    Bonjour, je n'arrive pas a faire prendre en compte le carractéres '°' dans mon programme,
    j'ai essayé de changer les coding dans mon prog mais rien n'y fait.

    est ce que qqu'un peut me renseigner.

    ps: j'ai déjà jeté un coup d'oeil dans la faq....

    merci d'avance.

  2. #2
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    Il manque le bout de code où tu essaie de t'en servir et aussi ce que tu veux en faire (l'afficher sur console, l'afficher sur Tkinter, traiter un texte le contenant ...)

  3. #3
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    bonjour, ok, autant pour moi je met le code erreur ci bas

    Nom=str(nom)UnicodeEncodeError: 'ascii' codec can't encode character u'\xb0' in position 2: ordinal not in range(128)
    Script terminated.
    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    def new_imgf():
        global listrect,coordcroix,nettete,dic_coordmaster,image,coordmaster,xscreen,yscreen,X,Y,imagefile
        top=tk.Toplevel(relief=tk.GROOVE,bd=5)
        top.overrideredirect(1)
        a=int(root.winfo_screenwidth()/2)-225
        b=int(root.winfo_screenheight()/2)-25
        geo="450x70+"+str(a)+"+"+str(b)
        top.geometry(geo)
        E=0
        tk.Label(top,text='Patientez, traitement en cours').grid()
        label=tk.Label(top,text='Image '+str(E)+ 'sur'+str(len(coordcroix)))
        label.grid()
        a=1
        image_orig=Image.open(imagefile)
        ####
        f=tk.Frame(top, width=400, bd=3, relief=tk.GROOVE)
        f.grid(pady=3)
        can=tk.Canvas(top,height=10)
        can.grid(column=0,row=2, rowspan=15,sticky=tk.W)
     
        n=can.create_rectangle(0,0,10,10,fill='green')
     
        #####
        if coordcroix!=[]:
            xo,yo=image.size
            X,Y=float(xscreen),float(yscreen)
            re,ri=(float(xo)/float(yo)),(X/Y)
            rx,ry,rX,rY=listrect[0],listrect[1],listrect[2],listrect[3]
            rl,rh=(rX-rx),(rY-ry)
     
     
            if re>ri:
                #print "re>ri"
                X=float(xscreen)
                Y=int(X/re)
                X=xscreen
     
            elif re<ri:
                #print "re<ri"
                Y=float(yscreen)
                X=int(Y*re)
                Y=yscreen
     
     
            for i in coordcroix:
                image_orig=Image.open(imagefile)
                im=image.crop(((int(xo*(i[1]-(rl/2))/X)),(int(yo*(i[2]-(rh/2))/Y)),
                                  (int(xo*(i[1]+(rl/2))/X)),(int(yo*(i[2]+(rh/2))/Y))))
                xm,ym=(coordmaster[2]-coordmaster[0]),(coordmaster[3]-coordmaster[1])
                xmo,ymo=int((xo*xm)/X),int((yo*ym)/Y)
                thumb=im.resize((xmo,ymo),Image.BICUBIC)
     
                if dic_coordmaster['nb']['nb']=='1':
                    thumb=thumb.convert('L')
                    thumb=thumb.convert('RGB')
                else:
                    pass
     
                thumbnail=IE.Sharpness(thumb)
                thumbnails=thumbnail.enhance(nettete.get())
                epaisseur=int(dic_coordmaster['bordure']['epaisseur'])
                couleur=str(dic_coordmaster['bordure']['couleur'])
                thumb=IO.expand(thumbnails,border=epaisseur,fill=couleur)
     
                path,nom=os.path.split(imagefile)
                #print nom, path
     
                l_nom=nom.split('.')
                #print l_nom
                ext=l_nom[len(l_nom)-1]
                l_nom.remove(l_nom[len(l_nom)-1])
     
                ##print l_nom
                nom=''
                for i in l_nom:
                    nom=nom+' '+i+' '
     
                try:
                    os.makedirs(path+'/GROUPES_MONTES/')
                    path1=path+'/GROUPES_MONTES/'
                    #print path1
                except:
                    path1=path+'/GROUPES_MONTES/'
                    #print "except : ",path1
     
                x1m,y1m=int((coordmaster[0]*xo)/X),int((coordmaster[1]*yo)/Y)
     
                image_orig.paste(thumb,(x1m,y1m))
                imgdef=image_orig
                b=str(a)
                Nom=str(nom) ## bogue ici
                image_originale=text2img(imgdef,imagefile[:(len(imagefile)-4)]+'_'+b)
                chemin=path1+ Nom + "_" + b + ".JPEG"
                image_originale.save(chemin,format='JPEG',quality=85)
                a=a+1
                label.configure(text='Image '+b+ ' sur '+str(len(coordcroix)))
                n2=int(400./len(coordcroix)*int(b))
     
                n=can.create_rectangle(0,0,n2,10,fill='green')
                label.update()
    merci d'avance

  4. #4
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    C'est normal, la fonction str n'accepte pas les chaine unicode (vu qu'elle le transforme en ascii)

    Donc si tu veux transformer ta chaine unicode en chaine normale, il faut spécifié un encodage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nom = nom.encode('utf-8')
    => http://python.developpez.com/faq/?page=Unicode#UniToStr

    A priori, "str = encode('ascii')"

  5. #5
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    bonsoir,

    Je me permet de revenir pour ce problème d'encodage.
    Le problème se déplace....

    File "C:\Documents and Settings\Benoit\Mes documents\Programmation\CompoGR_140\CompoGR.py", line 548, in new_imgf
    chemin=path1+ Nom + "_" + b + ".JPEG"
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 2: ordinal not in range(128)


    j'ai modifier mon script pour remplacer :
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nom=nom.encode('cp1252')
    comment faire en sorte que path1+ Nom + "_" + b + ".JPEG" renvoie une chaine encodée cp1252?

    merci d'avance

  6. #6
    Membre émérite
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Par défaut
    Truc débile ta essayer....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    chemin= path1+ Nom + "_" + b + ".JPEG"
     
    chemin.encode('cp1252')
    [SIZE="2"]Dis moi qui tu suis, je te dirais qui je Hais!
    Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit

    Mon premier Tutoriel


    A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes...

  7. #7
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    bonsoir, merci pour votre aide.

    j'ai passer toute mes variables en encodage latin-1 et tout fonctionne bien.

    merci

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

Discussions similaires

  1. Codage ASCII - Chaîne de caractères.
    Par Noob69 dans le forum Débuter
    Réponses: 14
    Dernier message: 20/11/2010, 21h04

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