URL: https://linuxfr.org/forums/programmation-python/posts/debutant-comment-corriger-une-erreur-unicode-bebete-et-classique Title: (débutant) Comment corriger une erreur unicode bébête et classique ? Authors: ZeroHeure Date: 2017年04月26日T16:57:46+02:00 License: CC By-SA Tags: Score: 1 Je ne connais ni Python, ni l'objet, mais je dois faire marcher un script, dont le mainteneur tarde à répondre. Le pire c'est qu'il est payé... Il y a une erreur classique avec unicode: _UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)_ Quand les valeurs n'ont pas d'accent, tout marche, sinon tout plante, lors de l'utilisation de str(). J'ai vérifié tout ce que j'ai pu, tenté de comprendre, mais je ne sais pas faire marcher correctement str(). Je sais que par défaut ça prend de l'ASCII. Le script est préfixé par # -*- coding: utf-8 -*- et enregistré en UTF8. Le script récupère les valeurs d'un formulaire dans un tableau (je crois) : ```python tx_values.update({ # infos 'crap_name': values.get('partner_name') and values.get('partner_name')[0:126].encode('utf-8') or '', 'crap_zip': values.get('partner_zip') and values.get('partner_zip')[0:62].encode('utf-8') or '', }) ``` Puis les passe à une fonction "crapoto": ```python tx_values['calc_crapoto'] = self._generate_crapoto(self, tx_values) return tx_values ``` Voilà la fonction ; elle plante sur str() — je crois comprendre qu'il s'agit de convertir en chaîne ? ```python def _generate_crapoto(self, crap_values): crapoto = '' for key in sorted(crap_values.iterkeys()): if key.startswith('crap_'): crapoto += str(crap_values[key]).decode('utf-8') + '+' crapoto += etc. etc. ``` Bien entendu, j'ai bricolé pas mal, je vous passe la liste, mais ne connaissant pas Python je bloque.

AltStyle によって変換されたページ (->オリジナル) /