'ascii' codec ne peut pas encoder les caractères à la position * ord pas in range(128)
Il y a quelques fils sur stackoverflow, mais je ne pouvais pas trouver une solution valable pour l'ensemble du problème.
J'ai recueilli des sommes énormes de données textuelles de la urllib la fonction de lecture et stockées dans la saumure fichiers.
Maintenant, je veux écrire ces données dans un fichier.
Lors de l'écriture j'ai des erreurs similaires à
'ascii' codec can't encode character u'\u2019' in position 16: ordinal not in range(128)
et un grand nombre de données est perdue.
Je suppose que les données de la urllib lire est un octet de données
J'ai essayé
1. text=text.decode('ascii','ignore')
2. s=filter(lambda x: x in string.printable, s)
3. text=u''+text
text=text.decode().encode('utf-8')
mais encore im de se retrouver avec des erreurs similaires.
Quelqu'un peut-il point une bonne solution.
Et codecs bande de travail.
Je n'ai pas de questions si le conflit octets ne sont pas écrites dans le fichier comme une chaîne, d'où la perte est accepté.
text
?OriginalL'auteur minocha | 2013-03-12
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire par le biais de
smart_str
deDjango
module. Juste essayer ceci:Vous pouvez installer Django en commençant par un shell de commande avec des privilèges d'administrateur et exécutez la commande suivante:
Deux ans plus tard, je peux dire à quel point cette réponse est pour python2.7, désolé pour la gêne remarque ci-dessus^
OriginalL'auteur Thanasis Petsas
Vos données est unicode de données. Pour écrire dans un fichier, utilisez
.encode()
:mais qui permettrait d'éliminer tout ce qui n'est pas de l'ASCII. Peut-être que vous avez voulu coder plus convenable d'encodage, comme UTF-8, à la place?
Vous pouvez lire sur le langage Python et Unicode:
Le Minimum Absolu que Tout Développeur Doit Absolument, Positivement Savoir Sur Unicode et les Jeux de Caractères (Pas d'Excuses!) par Joel Spolsky
La Python Unicode HOWTO
Pragmatique Unicode par Ned Batchelder
Cela fonctionne pour la plupart de la mesure..
J'ai remarqué que lors de l'écriture dans la bd, j'ai utilisé l'encodage de la fonction. et j'ai été inutilement de faire de l'encodage décoder tout en verser le contenu dans un fichier texte à nouveau. Il y a cependant quelques erreurs, peut-être à cause du codage utf 8 et utf 16 conflits. toute résolution que vous pourriez suggérer ?
Aucune idée sur ce que je devrais faire si l'erreur persiste encore ?
lire les articles liés avec soin, et la documentation de la base de données que vous utilisez. Peut-être que la base de données gère l'Unicode en natif, par exemple.
OriginalL'auteur Martijn Pieters