• [^] # Re: Besoin de plus de détails

    Posté par . En réponse au message str et encodage ASCII, unicode.... Évalué à 2.

    Si les variables sont de type str contenant de l'UTF-8, c'est bien decode('utf-8') qu'il faut utiliser. Tu peux essayer:

    values.update({'name': res.product_id.name.decode('utf-8') + " - " + xpak.pack_pro_id.name.decode('utf-8')})
    # ou plus simple à écrire (code équivalent):
    values['name'] = res.product_id.name.decode('utf-8') + " - " + xpak.pack_pro_id.name.decode('utf-8')

    Mais au vu de l'erreur, je pense qu'elles sont déjà en unicode (et le cast en str() n'aime pas les caractères unicodes). Dans ce cas, si values['name'] attend bien de l'unicode, il ne devrait pas y avoir besoin de transformation.

    values['name'] = res.product_id.name + " - " + xpak.pack_pro_id.name

    Si les variables d'entrées sont en unicode mais values['name'] doit être en str, je te proposes ça:

    values['name'] = (res.product_id.name + " - " + xpak.pack_pro_id.name).encode('utf-8')

    Note que tout ces exemples ne fonctionneront qu'en Python 2.


    Tu peux admirer ici l'enfer de la gestion de l'encoding en Python. Certaines libs prennent uniquement des str en paramètre de leurs fonctions, d'autres uniquement des unicode. Pareil pour les valeurs de retour, le type varie suivant les libs, et parfois même les deux types peuvent être retournés. Dans 80% des cas, ça n'est pas documenté.