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.
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é.
[^] # Re: Besoin de plus de détails
Posté par BAKfr . En réponse au message str et encodage ASCII, unicode.... Évalué à 2.
Si les variables sont de type
strcontenant de l'UTF-8, c'est biendecode('utf-8')qu'il faut utiliser. Tu peux essayer: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, sivalues['name']attend bien de l'unicode, il ne devrait pas y avoir besoin de transformation.Si les variables d'entrées sont en unicode mais
values['name']doit être enstr, je te proposes ça: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
stren paramètre de leurs fonctions, d'autres uniquement desunicode. 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é.