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

Odoo (ex-OpenERP) Discussion :

Erreur Unicode [V6]


Sujet :

Odoo (ex-OpenERP)

  1. #1
    Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Avril 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 50
    Points : 53
    Points
    53
    Par défaut Erreur Unicode
    Bonjour,

    Suis débutant dans OpenERP et Phython.

    Dans une édition, dans la première colonne, est imprimer le mois en lettre en l'année.
    Lorsque le mois comporte un accent (Février, Août, Décembre) le rapport plante pour cause de caractère Unicode non reconnu.

    J'ai besoin de votre aide. merci

    Voici le code:

    -l'inisialisation :

    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
         ym_desc = {}
            for prod_data in prod_datas:
                tdate = datetime.datetime.strptime(prod_data.date, '%Y-%m-%d')
                ym = tdate.strftime('%Y-%m')
                ore_cat = prod_data.ore_type_id.category
                ore_code =  prod_data.ore_type_id.code
                volume = prod_data.volume_of_ore
                weight = prod_data.weight_of_ore
                
                if(ym not in ym_desc):
                    #check base/res/res_lang.py line 56-62
                    lang = context.get('lang','en_US')
                    for ln in tools.get_locales(lang):
                        try:                        
                            locale.setlocale(locale.LC_ALL, str(ln))
                            break
                        except locale.Error:
                            continue
                    #set month year description
                    ym_desc[ym] = tdate.strftime('%B %Y')
    - Le code où cela plante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            row_xml = { 'month' : [], 'ending' : [] }
            for key, row in rows:
                if key != 'ending':
                    tkey = 'month'
     --->         row_xml[tkey].append('<row monthYear="%s">' % (ym_desc[key]))
                else:
                    tkey = 'ending'
                    row_xml[tkey].append('<row>')
    Enfin, l'erreur affichée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    utf8
    <row monthYear="août 2014">
    18
    23
    unsupported Unicode code range
    
    (<type 'exceptions.UnicodeDecodeError'>, UnicodeDecodeError('utf8', '<row monthYear="ao\xfbt 2014">', 18, 23, 'unsupported Unicode code range'), <traceback object at 0x03AE3328>)
    J'ai essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ym_utf8 = tdate.strftime('%B %Y')
    ym_desc[ym] = unicode( ym_utf8 , 'UTF8')
    Mais sans succès.

    Mille merci pour votre aide

  2. #2
    Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Avril 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 50
    Points : 53
    Points
    53
    Par défaut
    J'ai enfin trouvé la solution.

    J'étais très très proche depuis le début, sauf que comme je suis sur un serveur Windows, on doit passer par un décodage avant de coder en utf-8


    Revoyons le code qui provoquais l'erreur:

    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
         ym_desc = {}
            for prod_data in prod_datas:
                tdate = datetime.datetime.strptime(prod_data.date, '%Y-%m-%d')
                ym = tdate.strftime('%Y-%m')
                ...
                if(ym not in ym_desc):
                    #check base/res/res_lang.py line 56-62
                    lang = context.get('lang','en_US')
                    for ln in tools.get_locales(lang):
                        try:                        
                            locale.setlocale(locale.LC_ALL, str(ln))
                            break
                        except locale.Error:
                            continue
                    #set month year description
                    ym_desc[ym] = tdate.strftime('%B %Y')
    
                ...
    
                # Après initialisation, voici le code provoquant l'erreur:
                
            row_xml = { 'month' : [], 'ending' : [] }
            for key, row in rows:
                if key != 'ending':
                    tkey = 'month'
     --->         row_xml[tkey].append('<row monthYear="%s">' % (ym_desc[key]))
                else:
                    tkey = 'ending'
    Comme je travaille sur Windows serveur 2003, il faut un decodage avant le codage utf-8.
    Revenons a l'initialisation des dates:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #set month year description
    ym_desc[ym] = tdate.strftime('%B %Y')
    
    #doit être écrit en version windows
    ym_desc[ym] = tdate.strftime('%B %Y').decode('cp1252').encode('utf-8')

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

Discussions similaires

  1. Erreur unicode \u8:
    Par Ca-Nul-Art dans le forum Débuter
    Réponses: 9
    Dernier message: 21/11/2013, 16h51
  2. Erreur unicode / ASCII
    Par hannibal.76 dans le forum Général Python
    Réponses: 2
    Dernier message: 03/12/2012, 16h23
  3. SSIS unicode erreur
    Par Maitre B dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/03/2007, 16h57
  4. [MFC]Unicode en visual c++ 7.0 erreur linkage
    Par kinhelios dans le forum Visual C++
    Réponses: 1
    Dernier message: 10/01/2007, 15h13
  5. erreur unicode
    Par mickael99 dans le forum Général Python
    Réponses: 11
    Dernier message: 26/07/2005, 09h19

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