J'ai une fonctionnalité de mon programme où l'utilisateur peut télécharger un fichier CSV, que mon programme passe et utilise comme entrée. J'ai un utilisateur qui se plaint d'un problème où son entrée vomit une erreur. L'erreur est causée par un caractère illégal qui est codé mal. Les caractères sont ci-dessous:
UnicodeDecodeError at /chris/import.html
('ascii', 'blah \xa0 BLAH', 14, 15, 'ordinal not in range(128)')
4 Réponses :
Vous pouvez passer, "ignorer" pour sauter des caractères non valides dans .encode / .decode
Comme "illégal" .Decode ("utf8", "ignorer") code>
Déclarez le codage sur la deuxième ligne de votre script. Il doit vraiment être deuxième. Comme Cela pourrait suffire à résoudre votre problème tout seul. Sinon, voir str.encode ('utf-8') et str.decode ('utf-8'). p> p>
Le seul moyen de le faire (au moins dans Python2) consiste à utiliser UNICODEDATA.NORMALIZE:
unicodedata.normalize('NFKD', text).encode('utf-8', 'ignore')
Vous pouvez également utiliser: pris à partir de https://wiki.python.org/moin/purshex%20python%20one-liners p> ** PS, sur le site Web, il est désigné d'utiliser Python, mais j'ai testé python3 et ça marche juste bien p> p>
Au fait, la raison pour laquelle vous «ne peut rien faire», c'est probablement parce que toutes les choses que vous avez essayées impliquaient de taper des expressions à l'invite. L'interprète interactif affiche le résultat de chaque expression en appelant REC () dessus. Parfois, cela conduit à décoder des erreurs car votre console ne gère pas Unicode (ou d'autres raisons?). Si vous obtenez une telle chose, essayez d'assigner à un nom factice (par exemple "x = foo" au lieu de "foo") et qui ne montrera généralement pas une exception. Ensuite, vous savez que l'exception est faux.